OSX:NSButton与标签无法识别

问题描述:

我有一个NSButton我在NSTableView的细胞内,我想分配给它的动作和标签有一个指标,所以我做:OSX: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不...为什么?

如果您只需要标签以获取正确的行索引,那么我可能会为您提供另一种解决方案。我还需要通过按钮按下来查看视图。而不是使用标签,我只是要求表视图中的按钮superview的索引。对我来说,这是更好的方法,因为细胞更改顺序..

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

我希望我能够帮助你!

+0

不要使用'sender.superview',因为它迟早会破坏(你不拥有层次结构中的所有视图)。讨厌 - 寻找正确的超级观点。不错 - 创建一个自定义的子类,所以你不需要标签或视图搜索。 – Wain 2014-10-06 16:44:36

+0

谢谢,它工作正常与“sender.superview”,但只与“发件人”... – CrazyDev 2014-10-07 07:59:45