从TabBarController获取ViewController最佳实践

时间:2014-05-16 19:30:29

标签: ios objective-c uiviewcontroller uitabbarcontroller

我正在开发一款汽车应用。 我有一个tabBar链接到不同的视图控制器(CarInfoViewController是其中之一)。

我正在使用以下方式将数据传递给其中一个视图控制器

CarInfoViewController *myCarInfoController =  [self.tabBarController.viewControllers objectAtIndex:2];
[myCarInfoController setSearchParam:vin];

我想知道使用objectAtIndex直接从TabBar获取视图控制器与执行以下操作之间的区别:

CarInfoViewController *myCarInfoController = [[CarInfoViewController alloc] init];
[myCarInfoController setSearchParam:vin];

两种方式都有效!我很想知道在这种情况下最好的做法是什么。

1 个答案:

答案 0 :(得分:3)

我怀疑两者都运作良好。 当然,除非您以编程方式创建视图控制器,并且它是您创建的非常myCarInfoController对象,稍后将其添加到选项卡栏控制器。

使用您的第一个声明,您会从标签栏收到控制器。这可能是一个在Interface Builder或Storyboard Editor中分别创建的控制器。在这个视图控制器中,你知道它是选项卡号中的那个。 3(索引编号2)

您的第二个声明分配了CarInfoViewController的全新实例。假设之前已经创建了一个(在IB中),并且在标签栏控制器中作为第三个控制器存在,那么您有两个相同类的相互不相关的内容。如果你知道将任何数据传递给myCarInfoController(变体2),那么在标签栏控制器实际使用的那个实例中什么都不会发生。