我有一个包含 tabView 的 mainWindowController(我用来在主窗口上的视图之间切换)。
我有每个视图的视图控制器(每个都有一个 nib 文件)。其中一个视图视图 A 包含一个 tableView。我需要使用委托方法来完成某些事情。
经过一两个小时或网络研究和阅读代表(对我来说是新概念),我终于得到了我的程序,以实现我想要的结果,用于视图 A。
这是视图 A 的接口声明:
@interface ViewAController : NSViewController <NSTableViewDelegate>
- (BOOL) tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
如您所见,我正在使用 NSTableViewDelegate 并且需要禁用表格列的编辑。该方法的实现如下所示:
- (BOOL) tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSLog(@"shouldEditTableColumn called");
return NO;
}
我使用 NSLog 来确保正在调用该函数。
现在在SAME视图控制器(视图 A)中,我通过单击按钮禁用编辑:
- (IBAction)turnOffEditing:(id)sender
{
[self.tableView setDelegate:self];
[self tableView:self.tableView shouldEditTableColumn:self.columnTableName row:0];
[self tableView:self.tableView shouldEditTableColumn:self.columnTableName row:1];
NSLog(@"turnOffEditing");
}
如您所见,我从视图控制器获取 tableView 并将委托分配给 self。
然后我调用 self.shouldEditTableColumn 方法。
现在,一切正常。但是,这是使用委托的正确方法吗?如果我需要为视图 A 使用更多的 NSTableView 委托方法(唯一具有表的视图),我假设我可以像以前一样在视图 A 的控制器中定义它们?