我为我的iPad应用程序使用了UiTabBarController。其中一个标签是带收藏夹的UITableView。当我点击一个单元格时,我希望收藏夹在另一个选项卡中的viewController中打开。
我通过在单例中分配变量然后通过[self.tabBarController setSelectedIndex:2]选择另一个选项卡来解决它的丑陋方式;
在目标viewController的ViewWillAppear中,我从单例中读取值,然后执行所有操作。
必须有一个正确的方法来做到这一点。如何在另一个选项卡中引用ViewController的实例?有没有办法在选项卡中加载另一个viewController?
任何?
答案 0 :(得分:0)
您可以使用viewControllers属性在Tab视图中获取所有视图控制器。
来自文档:
此属性的默认值为nil。配置选项卡栏控制器时,可以使用此属性为选项卡栏界面的每个选项卡指定内容。数组中视图控制器的顺序对应于选项卡栏中的显示顺序。因此,索引0处的控制器对应于最左侧的选项卡,索引1处的控制器对应于右侧的下一个选项卡,依此类推。如果视图控制器中的视图控制器数量超过了标签栏,则数组末尾的视图控制器将由更多导航控制器管理,该控制器本身不包含在此数组中。
答案 1 :(得分:0)
为表视图控制器创建委托协议:
@protocol MyTableViewControllerDelegate <NSObject>
- (void) myTableViewController: (MyTableViewController *) myTableViewController didSelectSomeObject: (MyClass *) object
@end
并为委托创建一个属性:
@property (nonatomic, assign) IBOutlet id<MyTableViewControllerDelegate> delegate;
然后使第二个视图控制器成为表视图控制器的委托 - 通过在界面构建器中挂起它们,或者如果知道它们两者,则在应用程序委托中。
然后,只要选择了表中的一行,就调用委托方法,该方法将通知另一个视图控制器。