在不使用Cocoa绑定的情况下,什么被认为是处理多个NSTableView的最佳方法?
在我的应用程序中,我有两个NSTableViews足够密切相关,我使用相同的对象作为委托和dataSource两者.问题是tableViews调用相同的方法.我目前在NSControl -tag的基础上区分两个tableViews.
我深入研究这段代码,使用-tag看起来更加丑陋.我最终创建了大量重复的代码来区分每个委托/ dataSource方法中的tableViews.代码最终明显是非面向对象的.
我可以创建一个单独的对象来处理一个或另一个tableView,但是创建所述对象将是一个很大程度上是人为的构造,只是为了提供一个独特的委托/ dataSource.
大家现在只使用Cocoa Bindings吗?我正在避免使用Bindings,因为我希望磨练我的Cocoa技能,这些技术可以在Mac OS和iPhone之间进行转换.
NSTableView的每个delegate/dataSource方法都传递NSTableView的实例,该实例将其作为第一个参数调用(除了传递NSNotification对象的那个,在这种情况下,NSNotification object
是表视图实例).一些例子包括:
- (int)numberOfRowsForTableView:(NSTableView*)aTableView;
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn*)aTableColumn row:(NSInteger)rowIndex
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
如果您使用一个控制器对象作为多个表的委托/数据源,则可以使用该参数来区分它们.