使用XCode 4和情节提要为AppDelegate中的TabBar创建一个委托



我正在制作我的第一个应用程序。我使用Xcode 4和故事板来更好地了解正在发生的事情。该应用程序(在故事板中)从一个带有4个选项卡的TabBarController开始。其中两个选项卡是具有表视图系统的导航控制器,另外两个选项卡为常规视图控制器。

我只在Storyboard中制作了TabBarController本身,没有为它或任何东西制作类。因此,应用程序中的所有选项卡似乎都在同时"运行",当我输入另一个选项卡并返回时,它们保持不变。这看起来有点不专业,也许对iphone也不好?

现在,当输入另一个选项卡时,我想使左侧选项卡变为非激活/重置为RootViewController。

换句话说,为TabBar创建某种委托功能,以便只有选定的选项卡处于活动状态。类似的东西。如果我错了,请纠正我,我只是想弄清楚我需要做什么。

根据我的研究,我所要做的就是在AppDelegate.h中为TabBar创建一个属性,在AppDelegte.m中合成它,然后以某种方式将TabBar的委托给AppDelegate(self?)或其他什么,这在这里以某种方式完成(AppDelegates.m):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//some statements.

然后在AppDelegate.m:中添加类似的内容

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
//With some statements about the viewcontrollers

但正如你所看到的,我在编码方面不是很有经验,我找不到我能理解的教程/指南,因为他们使用xibs等。所以有人能帮我做这个功能吗?我需要代码示例来理解如何做到这一点,如果你只用文字描述这个过程,如果你理解我的意思,它只会给我带来很多新的问题。

代表4个选项卡(2个表视图和2个视图)的类称为:

FirstTableViewController,SecondTableViewController、FirstViewController、SecondViewController

我不知道在AppDelegate中创建这个函数是否足够,或者我是否必须为TabBar创建一个类(.h/.m),在不同的ViewControllers类中添加代码等等。

我希望有人能以最简单、最正确的方式帮助我做到这一点,我相信许多其他人在应用程序开发的初级阶段会陷入这种困境,并会找到非常有用的答案。

谢谢你的帮助。

这是苹果公司和用户期望的基于选项卡栏的应用程序的行为。它允许您查看应用程序的不同区域,而不会丢失您所在的位置。

但是,如果在某些情况下想要将视图控制器重置回其原始状态,则可以在给定视图控制器的viewWillAppear中执行此操作。

如果你想通过应用程序代理处理这件事&选项卡栏控制器的委托方法,则在Storyboard/XIB加载后可以引用选项卡栏。只需使用:

应用程序代理内部的rootViewController.tabBarController.delegate = self

或者,您可以在情节提要中将tabBarController的类更改为自己的自定义类,方法是在左窗格的对象列表中选择选项卡栏控制器,然后转到标识检查器,将类从UITabBarController更改为自定义子类。