如何将数据传递到tabBarController上的多个viewcontrollers

时间:2013-04-16 18:18:20

标签: ios objective-c cocoa-touch segue tabbarcontroller

我正在重做我的应用程序的用户界面以使用表格视图以及标签栏控制器来分解要输入4个逻辑部分的数据量,而不是UITextFields和Switches的一个长滚动屏幕。

以前我会使用prepareForSegue中的以下代码将新的托管对象传递到新的视图控制器中:

  if ([[segue identifier ] isEqualToString:@"addDiveSite"]) {
    //
    UINavigationController *navController = segue.destinationViewController;

    AddEditDiveSiteViewController *adsvc = (AddEditDiveSiteViewController *) navController.topViewController;

    adsvc.navigationItem.title=@"Add Site";

视图控制器嵌入在导航控制器中,我通过询问topviewcontroller来获取它 - 因为只有一个屏幕。

现在使用标签栏控制器我有4个屏幕输入数据。

我知道我可以替代:

 if ([[segue identifier] isEqualToString:@"addDiveSite"]){

    UITabBarController *tabController =segue.destinationViewController  ;

    AddEditDiveSiteViewController *adsvc =(AddEditDiveSiteViewController *)[[tabController customizableViewControllers] objectAtIndex:0];


DiveSite *newDiveSite =(DiveSite*) [NSEntityDescription insertNewObjectForEntityForName:@"DiveSite" inManagedObjectContext:[self managedObjectContext]];

    adsvc.currentSite = newDiveSite;

但这只会让我将数据传递给4个选项卡中的一个上的属性,我需要在所有4个选项卡上访问它。

正确的方法是否有4种变体:

       AddEditDiveSiteViewController *adsvc =(AddEditDiveSiteViewController *)[[tabController customizableViewControllers] objectAtIndex:0];

索引处的4个标签/对象中的每一个都有一个

或者我应该查看子类化UITabBarController并给它一个属性来传递数据,如果是这样,那么从'父'UITabBarController获取属性的格式是什么?

或者有一种完全不同的方法吗?

感谢您花时间阅读和/或回复此

编辑

最后采用以下方法,似乎工作正常

对于视图2,3和4,我抓住它们所在的UITabBarController并获取它的控制器数组。然后我得到数组中的第一项,并创建一个指向我需要访问的属性的指针。

当您知道要寻找什么时。

希望这可以帮助那些人

0 个答案:

没有答案