当用户到达NStableView的最后一行时,如何动态添加行?

时间:2014-08-29 10:46:37

标签: macos cocoa nstableview

我有一个NSTableview,它显示当前50行是固定的静态。现在我想在其中添加一个功能。当用户到达NSTableView的最后一行时,我想向表中添加更多50行。我的意思是目前我在应用程序中显示固定的50行。

但是现在我想在用户到达之前NsTableview的最后一行时再添加50行。

请给我任何建议或任何示例代码以实现我的动机。提前谢谢。

我所做的是(此代码不适用于所选行(按下向下键),并且不加载新行) -

-(void)awakeFromNib{

    for(int i=0;i<25;i++)
        [_list addObject:[[Person alloc] init]];
    [_tableView reloadData];

        [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(scrollViewDidScroll:) name:NSViewBoundsDidChangeNotification object:[[_tableView enclosingScrollView] contentView]];

}

    -(void) doSomething{
        Person *p = [[Person alloc] init];
        static int i =1;
        NSString *string = [NSString stringWithFormat:@"John%i",i];
        [p setName:string];
        for(int i=0;i<25;i++)
            [_list addObject:p];
// Need to use reloadDataForRowIndexes:columnIndexes: anyone please help me with this.
            [_tableView reloadData];

        i++;

    }
- (void)scrollViewDidScroll:(NSNotification *)notification {

    NSScrollView *scrollView = [notification object];
    // Test if bottom of content view is reached.
    CGFloat currentPosition = CGRectGetMaxY([scrollView visibleRect]);
    CGFloat tableViewHeight = [self.tableView bounds].size.height;

    if (currentPosition  > tableViewHeight) {
        // YOUR ACTION

        [self doSomething];


     }

0 个答案:

没有答案