引用当前显示在TabBarController中的视图控制器

时间:2013-11-24 09:15:19

标签: ios objective-c reference

我正在使用TabBarController中排列的四个视图控制器构建应用程序。我需要获得对当前显示为能够在appdelegate中执行switch语句的viewcontroller的引用。我的意思是我想做类似的事情:如果ViewController1显示做某事,如果显示ViewController2做其他事情,....

有人可以帮助我吗?

1 个答案:

答案 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;

然后你从那里开始,访问标签栏并获取当前选中的控制器。 (如果选定的视图控制器是导航控制器堆栈的根,那么它本身可能是一堆视图控制器。但这取决于你的应用程序是从那里构建的。)