刷新UISplitView控制器的主表视图

同时将我们最新的iPhone应用程序移植到通用应用程序,我决定在TabBarController中使用iPad的SplitView控制器。 SplitViewController由AppDelegate为每个Tabpipe理。

所有的工作正常,但我的问题是,我的MasterView(在SplitView的左侧)包括4个类别button来更改TableViews数据。 如果我点击其中一个button,TableView需要刷新/重新加载数据,以显示所选类别的新内容。 我创build了一个函数来执行更改,并在界面生成器中将button链接到它。

在我的function结束时,我尝试刷新控制器,如下所示:

[self tableView ReloadData]; 

但SplitView不显示刷新。 仍然是旧的数据。 我用NSLogtesting了一下,检查我的函数是否正常工作。 没问题。

然后我尝试通过SplitViewController本身访问tableView,如下所示:

  // PresetController is my TableViewController in the SplitView UISplitViewController *split = (UISplitViewController *)self.parentViewController; PresetController *detail = [split.viewControllers objectAtIndex:0]; [detail.tableView reloadData]; 

再次,没有错误,但没有刷新。

我错过了什么吗? 有什么方法可以轻松地重新加载SplitView中的TableViewController? 我已经阅读了一些关于通过NotificationCenter向委托发送Notfication的信息,但仍然找不到有用的资源。

编辑:

为了理解我的结构,下面是我在AppDelegates“didFinishLaunchingWithOptions”方法中设置SplitView的方法:

 NSMutableArray *controllers = [NSMutableArray arrayWithCapacity:[self.rootController.viewControllers count]]; int tabNum = 0; for (UIViewController *controller in self.rootController.viewControllers) { UISplitViewController *split = [[[UISplitViewController alloc] init] autorelease]; split.tabBarItem = controller.tabBarItem; iPadDetailView *detail = [[iPadDetailView alloc] initWithNibName:@"iPadDetailView" bundle:nil]; // a detail view will come here UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:detail] autorelease]; split.viewControllers = [NSArray arrayWithObjects:controller, nav, nil]; [controllers addObject:split]; } tabNum++; 

尝试:

 PresetController *detail = [split.viewControllers lastObject]; 

索引0处的视图控制器将成为您的“主”控制器,并且我认为“细节”控制器是具有您尝试更新的表视图的控制器。

编辑:

你不想在标签视图中使用UISplitViewController ; 它需要是rootViewController