【问题标题】:NSTableView reload data from different controllerNSTableView 从不同的控制器重新加载数据
【发布时间】: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


    【解决方案1】:

    您可以使用通知/观察者重新加载表格视图。

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(reloadTable:)
                                                 name:@"reloadNotification"
                                               object:nil];
    
    - (void)reloadTable:(NSNotification *)notif {
        [self.tableName reloadData];
    }
    

    在你的第一个标签中使用这个:

    [[NSNotificationCenter defaultCenter] postNotificationName:@"reloadNotification" 
                                                        object:nil];
    

    【讨论】:

    • 这正是我想要的,它会非常方便。谢谢 Anoop Vaidya!
    • 确实有效!但我还不能投票,我没有足够的声誉:(
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多