比单例更正确,比子类更容易:
任何时候都可以通过self.tabBarController.childViewControllers
属性获取兄弟viewControllers的引用。
因此,假设您在第一个选项卡中并且想要将数据传递给第二个选项卡控制器,您可以在第一个选项卡控制器的任何位置执行此操作:
MySecondController *secondController = [self.tabBarController.childViewControllers objectAtIndex:1]; //second tab has index 1 (begins in 0).
secondController.someProperty = self.someProperty
如果您想在选择第二个选项卡时传递此数据,请实现该UITabBarControllerDelegate
方法shouldSelectViewController:
并将代码放入其中,如下所示:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
MySecondController *secondController = [self.tabBarController.childViewControllers objectAtIndex:1]; //second tab has index 1 (begins in 0).
if(viewController == secondController)
{
secondController.someProperty = self.someProperty
}
return YES;
}
如果你想将数据传回第一个控制器,你显然可以在第二个控制器中做同样的事情。