查看iPhone问题中的层次结构

时间:2011-09-07 16:06:34

标签: iphone viewcontroller

我不会说这无论如何都是好的设计。我有点继承现有的东西。无论如何,有一个TabController。在这一个选项卡中,有两个视图根据UISegmentController按需加载。这两个ViewControllers都是另一个具有我需要的方法的ViewController的子类。

当我在TabController中时,我想创建一个使用两个ViewControllers的一些超类方法的方法。如何根据需要加载选项卡的当前ViewController?我是否需要引用基本控制器类型,并在按需加载时将其设置为当前视图控制器?感谢。

2 个答案:

答案 0 :(得分:0)

要在屏幕上显示活动标签,可以使用[self.tabBarController selectedViewController],它将为您提供UIViewController参考。如果你想使用这些方法,你可以将它转换为你的ViewController超类,然后像这样调用方法(其中self.tabBarController是你的标签栏控制器):

MySuperClassViewController *viewC = (MySuperClassViewController *)[self.tabBarController selectedViewController];
[viewC someMethodDeclaredHere];

答案 1 :(得分:0)

首先,用一些术语来消除一些潜在的混淆:我假设你的意思是控制各种视图控制器的UITabBarController。此外,您似乎使用UISegmentedControl 视图控制器,但是UIView的子类。我希望这些只是错别字而不是概念问题。

当“我在标签控制器中”时,你的意思仍然存在一些歧义。我假设你想把代码放到代表UITabBarController的类中。但为什么?只需将这些方法放入适当的视图控制器中,或者如果之前必须要将其放入应用程序委托中。但是,如果这些方法位于视图控制器超类中,则它们应该与此视图控制器所需的逻辑有关。

如果您需要其他方法,即在视图控制器之外,请考虑创建单独的#include文件并将方法放在那里。或者,您可以使用可通过[[UIApplication sharedApplication] delegate]方便地访问的应用委托。