我正在使用TabBarController中排列的四个视图控制器构建应用程序。我需要获得对当前显示为能够在appdelegate中执行switch语句的viewcontroller的引用。我的意思是我想做类似的事情:如果ViewController1显示做某事,如果显示ViewController2做其他事情,....
有人可以帮助我吗?
答案 0 :(得分:0)
这里真正的问题是什么?
标签栏对象将告诉您当前显示的控制器。为此使用其属性selectedViewController
。详细信息:
https://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html#//apple_ref/occ/instp/UITabBarController/selectedViewController
如果您难以访问标签栏控制器本身,...
这样做没有可用的功能/方法等。保持对app delegate中tabbarcontoller对象的引用是一种常见模式。
此引用通常在applicationDidLoadWithOptions
中设置,其中标签栏要么从故事板中加载,要么以编程方式加载和显示它。
有一种记录良好的方式来访问委托。那就是:
MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
然后你从那里开始,访问标签栏并获取当前选中的控制器。 (如果选定的视图控制器是导航控制器堆栈的根,那么它本身可能是一堆视图控制器。但这取决于你的应用程序是从那里构建的。)