UITableViewController到UITabBarController的DetailViewController

时间:2012-03-28 09:23:30

标签: cocoa-touch uiviewcontroller uitabbarcontroller uitableview storyboard

我已经制作了一个在UITableViewController中正确列出的XML解析器。它传递了一些细节,并且也为MKMap视图提供了长度和长度。起初我的设置是直接从UITableViewController转到DetailViewController,这非常有效。它列出了列表中所选选项的XML的正确细节。

当前设置:

Navigation Controller > Table View > Detail View Controller

我只是想重新整理整个故事板。我没有直接转到DetailViewController,而是希望将它发送到Tab View。

新设置:

Navigation Controller > Table View > Tab Bar Controller - Detail View Controller 1
                                                       |_ Detail View Controller 2

根据我的NSLOG,表格视图中的数据传递给标签栏控制器,但不传递给详细视图控制器,是否可以将数据提升到详细视图控制器?

未显示任何错误或警告。但是这里有一些代码片段:

这是表视图控制器,它将正确的数据从segue发送到下一个控制器。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if([[segue identifier] isEqualToString:@"StadionDetail"]) { 
    StadionDetailViewController *detailViewController = [segue destinationViewController];
    NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow]; 
    detailViewController.theList = [app.listArray objectAtIndex:[myIndexPath row]];
  }
}

然后TabViewController正确接收该数据,但它不会将该数据提升到详细视图控制器。

1 个答案:

答案 0 :(得分:2)

如果按下UITabBarController,则必须遍历其viewControllers并将数据分配给每个viewController。

类似的东西:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([[segue identifier] isEqualToString:@"MyTabBarController"]) { 
        UITabBarController *tabBarController = [segue destinationViewController];
        for (MyFancyViewController *vc in [tabBarController viewControllers]) {
            vc.data = ...
        }
    }
}