2011-09-07 27 views
0

我不打算说这是以任何方式好设计。我有点继承现有的东西。无论如何,有一个TabController。一个这个标签,有两个视图根据UISegmentController按需加载。这两个ViewController都是另一个具有我需要的方法的ViewController的子类。在iPhone中查看层级问题

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

回答

0

要获得显示在屏幕上的活动选项卡,您可以使用[self.tabBarController selectedViewController],它会给你一个UIViewController参考。如果你要使用的方法,那么你可以将它转换为你的ViewController超类,然后调用它的方法就像这样(其中self.tabBarController是你的标签栏控制器):

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

首先,术语的一点点清除发现一些潜在的困惑:我假定你的意思是控制各种视图控制器的UITabBarController。此外,看起来你使用的是UISegmentedControl,它是而不是的视图控制器,但是UIView的子类。我希望这些只是错别字而不是概念问题。

对于“当我在选项卡控制器中”的含义,仍然存在一些含糊不清的含义。我假设你想把代码放入表示UITabBarController的类中。但为什么?只需将这些方法放入适当的视图控制器中,或者如果它是之前必须完成的任务,则将其放入您的应用程序委托中。但是,如果这些方法在视图控制器超类中,它们应该与该视图控制器所需的逻辑有关。

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