NSTableview选择抽搐

时间:2012-01-11 10:09:34

标签: objective-c cocoa xcode4

我在mac os x 10.6中创建了一个基于桌面的应用程序。该应用使用NSTableview列出文件。我用鼠标点击表格选择。使用的代码是

[tableView selectRowIndexes:ind byExtendingSelection:NO];

indindexset。 当我使用鼠标点击逐个选择文件时,每当我点击表格的行时,我会发现一个小的抽搐效果。任何人都可以建议一种避免抽搐效果的方法。

这是代码

- (void) clickedIt:(id)sender{
    id indexsett = [[NSIndexSet alloc] initWithIndexSet: [subviewTableView selectedRowIndexes]];
    if([indexsett count] <=1)
    {
        if  ([self isValidDelegateForSelector:@selector(tableView:shouldClickedRow:)])
        {
            [delegate  tableView:subviewTableView  shouldClickedRow:(int)[subviewTableView  selectedRow]];
        }
    }else
    {
        [indexsett enumerateIndexesUsingBlock:^(NSUInteger  idx, BOOL  *stop) {
            NSLog(@"tracing index:%ld",idx);
            [delegate tableView:subviewTableView shouldClickedRow:(int)idx];
        }];
    }
}

- (BOOL) tableView:(NSTableView *) tableView shouldClickedRow:(int) row
{
    if(row != -1) {
        if([ind count]>0) {
            if([ind containsIndex:row]) {
                [ind removeIndex:row];            
                [tableView selectRowIndexes:ind byExtendingSelection:NO];
            }else {
                [ind addIndex:row];
                [tableView selectRowIndexes:ind byExtendingSelection:NO];
            }
        }else {
            [ind addIndex:row];
            [tableView selectRowIndexes:ind byExtendingSelection:NO];
        }
        return YES;
    }else{
        [tableView selectRowIndexes:ind byExtendingSelection:NO];
    }    
    return YES;
}

0 个答案:

没有答案