【发布时间】:2013-01-14 12:03:23
【问题描述】:
我在更新两个表的内容时遇到问题,这两个表位于 NSTabView 的两个不同选项卡中,每个选项卡都由来自第三个控制器 (Controller2) 的不同控制器(Controller1 和 Controller3)控制。
我尝试了三种不同的方法:
方法 #1:
我在Controller1(表invitesTableView的控制器)中创建了refreshTable方法:
- (void)refreshTable {
invites = //fill my mutable array
NSLog(@"%@",invites);
[self.invitesTableView reloadData];
NSLog(@"invite's table view updated");
}
我后来从 Controller2 调用它:
Controller1 *controller1 = [[Controller1 alloc] init];
[controller1 refreshTable];
NSLog 正确打印数组邀请的内容,但表格未更新。我应该说,在应用程序启动时,我在 Controller1 中调用了相同的方法,并且数组邀请的内容已正确加载到表中。
方法 #2:在 Controller2 中我这样做:
Controller1 *controller1 = [[Controller1 alloc] init];
controller1.invites = //fill my mutable array
NSLog(@"%@",controller1.invites);
[controller1.invitesTableView reloadData];
但即使NSLog 显示正确的内容,表格的内容也不会更新。
方法#3:由于Controller1控制NSTabViewItem的内容,我在Controller1中集成了该方法:
- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)inviteTab
它工作得很好,因为我一打开由Controller1控制的选项卡就调用了refreshTable方法。问题是我在不同的选项卡中有不同的表,但我只能将一个控制器设置为NSTabView 的代表,因此我无法在不同的表中更新由 Controller3 控制的表。
除了合并 Controller1 和 Controller3 之外,我认为方法 3 没有简单的解决方案,但我认为我只是缺少前两种方法的一些内容。
希望我能清楚地解释自己。任何人都可以帮忙吗?提前致谢!
【问题讨论】:
标签: objective-c nstableview nstabview