我在更新两个表的内容时遇到问题,这些表位于 a 的两个不同选项卡中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 控制 a 的内容NSTabViewItem
,我在 Controller1 中集成了该方法:
- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)inviteTab
它工作得很好,因为我一refreshTable
打开由Controller1控制的选项卡就调用了该方法。问题是我在不同的选项卡中有不同的表,但我只能将一个控制器设置为 的委托NSTabView
,因此我无法在不同的表中更新由 Controller3 控制的表。除了合并 Controller1 和 Controller3 之外,我认为没有一个简单的方法可以解决方法 #3,但我认为我只是缺少前两种方法的一些东西。
希望我清楚地解释自己。任何人都可以帮忙吗?提前致谢!