0

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

我只在情节提要中制作了 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 个表格视图和 2 个视图)的类让我们称它们为:

FirstTableViewController、SecondTableViewController、FirstViewController、SecondViewController

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

我希望有人能以最简单和正确的方式帮助我做到这一点,我相信很多其他人在他们的应用程序开发的初学者阶段都会遇到这个困境,并且会发现这个问题的答案非常有用。

感谢您的帮助。

4

1 回答 1

2

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

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

如果您想通过应用程序委托和标签栏控制器的委托方法处理此问题,您可以在 Storyboard / XIB 加载后引用标签栏。只需使用:

rootViewController.tabBarController.delegate = self在您的应用委托内。

或者,您可以tabBarController通过在左窗格的对象列表中选择选项卡栏控制器并转到身份检查器,将类从更改UITabBarController为自定义子类,将类更改为故事板中您自己的自定义类。

于 2012-07-22T14:59:51.650 回答