使用带故事板的XCode 4在AppDelegate中为我的TabBar创建一个委托

时间:2012-07-22 14:53:18

标签: iphone xcode delegates tabs uitabbarcontroller

我正在制作我的第一款应用。我使用Xcode 4和故事板来更好地了解最新情况。该应用程序使用带有4个选项卡的TabBarController启动(在故事栏中)。其中两个选项卡是带有tableview系统的导航控制器,另外两个选项卡是常规的viewcontrollers。

我只在Storyboard中创建了TabBarController本身,而不是为它做任何类。因此,所有选项卡在应用程序中同时“运行”,当我进入另一个选项卡并返回时,它们保持不变。它看起来有点不专业,也可能对iphone不好?

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

换句话说,为TabBar创建某种委托功能,因此只有选定的选项卡处于活动状态。这样的事情。如果我错了,请纠正我,我只是想了解我需要做什么。

根据我的研究后的理解,我必须在AppDelegate.h中为TabBar创建一个属性,在AppDelegate.m中合成它,然后以某种方式将TabBar的委托给AppDelegate(自己?)或其他东西,这样就完成了在某处(AppDelegate.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个tableviews和2个视图)让我们称之为:

FirstTableViewController,SecondTableViewController,FirstViewController,SecondViewController

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这是Apple打算通过基于标签栏的应用程序所期望的行为。它允许您查看应用程序的不同区域,而不会丢失您的位置。

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

如果你想通过app delegate&选项卡栏控制器的委托方法,在加载Storyboard / XIB后,您可以参考选项卡栏。只需使用:

rootViewController.tabBarController.delegate = self在你的app代理内部。

或者,您可以在故事板中将tabBarController的类更改为您自己的自定义类,方法是在左窗格的对象列表中选择标签栏控制器,然后转到身份检查器,从{更改类{1}}到自定义子类。