iOS中 UITableView 是继承于 UIScrollView 的 二 Mac OS 中NSTableView 是继承NSControl 的, 所以 利用偏移量监听实现不了
但是 NSTableView是如何实现滑动了, 和NSScrollView的组合来实现的
利用
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(prepareForNewDisplay:) name:NSViewBoundsDidChangeNotification object:[[self enclosingScrollView] contentView]]; 来监听tableView的偏移量
以下这个类就是实现刷新的基类
功能点
1.加载更多 ,继承 然后实现delegate 即可
2 滑动结束后可得到当前可视cell的rect ,然后 NSRange showRange = [self.tableView rowsInRect:endRect];然后从数据源中取数据
#import <Cocoa/Cocoa.h>
typedef enum {
DMRefreshTableViewStateDefault = 1, //默认
DMRefreshTableViewStateTriggered, //已经可以出发刷新委托事件
DMRefreshTableViewStateLoading //正在加载
} DMRefreshTableViewState;
@protocol DMRefreshTableViewDelegate <NSObject>
@optional
- (void)refreshView:(id)view didChangeState:(DMRefreshTableViewState)state;
- (void)refreshViewDidLoading:(id)view; // only footer
- (void) setTableViewIsScrollAnimated:(BOOL)isAnimated
endRect:(CGRect)endRect;
@end
@interface DMTableRowView : NSTableRowView
@property (nonatomic, assign) NSInteger nowRowIndex;
@end
@in