我正在开发一款汽车应用。 我有一个tabBar链接到不同的视图控制器(CarInfoViewController是其中之一)。
我正在使用以下方式将数据传递给其中一个视图控制器
CarInfoViewController *myCarInfoController = [self.tabBarController.viewControllers objectAtIndex:2];
[myCarInfoController setSearchParam:vin];
我想知道使用objectAtIndex直接从TabBar获取视图控制器与执行以下操作之间的区别:
CarInfoViewController *myCarInfoController = [[CarInfoViewController alloc] init];
[myCarInfoController setSearchParam:vin];
两种方式都有效!我很想知道在这种情况下最好的做法是什么。
答案 0 :(得分:3)
我怀疑两者都运作良好。
当然,除非您以编程方式创建视图控制器,并且它是您创建的非常myCarInfoController
对象,稍后将其添加到选项卡栏控制器。
使用您的第一个声明,您会从标签栏收到控制器。这可能是一个在Interface Builder或Storyboard Editor中分别创建的控制器。在这个视图控制器中,你知道它是选项卡号中的那个。 3(索引编号2)
您的第二个声明分配了CarInfoViewController
的全新实例。假设之前已经创建了一个(在IB中),并且在标签栏控制器中作为第三个控制器存在,那么您有两个相同类的相互不相关的内容。如果你知道将任何数据传递给myCarInfoController
(变体2),那么在标签栏控制器实际使用的那个实例中什么都不会发生。