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);
}
我希望我能够帮助你!
不要使用'sender.superview',因为它迟早会破坏(你不拥有层次结构中的所有视图)。讨厌 - 寻找正确的超级观点。不错 - 创建一个自定义的子类,所以你不需要标签或视图搜索。 – Wain 2014-10-06 16:44:36
谢谢,它工作正常与“sender.superview”,但只与“发件人”... – CrazyDev 2014-10-07 07:59:45