OSX:无法识别带标记的NSButton

时间:2014-10-06 16:20:01

标签: macos cocoa tags nsbutton

我在NSTableView的单元格中有一个NSButton,我想为它分配一个动作和一个标记,以便我有一个索引:

NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    if( [tableColumn.identifier isEqualToString:@"check"] )
    {
        NSButton *button = (NSButton*)[cellView viewWithTag:100];

        if (button == nil)
            NSLog(@"button is null");
        [button setTag:row];
        [button setAction:@selector(SelectRow:)];
    }

}

- (IBAction)SelectRow:(id)sender{

    NSInteger index = [sender tag];

    NSLog(@"index:%lu", index);
}

你可以看到我有一个以tag = 100开头的NSButton:我在xib文件中设置它,并将其更改为行值。 但我有一个按钮零,因为它进入条件。 在IOS中,这个工作正常,但在OSX中没有...为什么?

1 个答案:

答案 0 :(得分:1)

如果您只需要标记来获得正确的行索引,那么我可能会为您提供另一种解决方案。我也需要用按钮按下来查看视图。我只是向表格视图询问了按钮superview的索引,而不是使用标签。对我来说,这是更好的方法,因为细胞改变秩序..

- (IBAction)selectRow:(NSButton *)sender {
     NSInteger row = [_tableView rowForView:sender.superview];
     NSLog(@"index:%lu", index);
}

我希望我能帮到你!