2012-07-22 55 views
0

我正在制作我的第一个应用程序。我使用Xcode 4和故事板来更好地了解正在发生的事情。该应用程序启动(在故事情节)与TabBarController与4个选项卡。其中两个选项卡是带有tableview系统的导航控制器,另外两个选项卡是常规viewcontroller。使用XCode 4与故事板为AppDelegate中的TabBar创建代表

我只在故事板中制作了TabBarController本身,没有为它做任何类。因此,所有标签在应用程序中同时“运行”,它们在我输入另一个标签后返回时保持不变。它看起来有点不专业,也可能对iPhone不好?

现在我想让左边的选项卡在输入另一个选项卡时变为无效/重置为RootViewController。

换言之,为TabBar制作某种委托功能,因此只有选定的选项卡处于活动状态。类似的东西。纠正我,如果我错了,我只是想了解我需要做什么。

经过我的研究后我明白,我必须为AppDelegate.h中的TabBar创建一个属性,然后在AppDelegate.m中合成它,然后以某种方式使TabBar的委托给AppDelegate(self?)或其他东西,这就是在这里完成某种方式(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 e tc ..那么有人可以帮我做这个功能吗?我将需要代码示例来了解如何去做,如果你只是用语言来描述这个过程,如果你理解我的意思,它会给我提出很多新的问题。

是reprecent的4个选项卡(2个tableviews和2次),让我们把它们叫做类:

FirstTableViewController,SecondTableViewController,FirstViewController,SecondViewController

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

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

谢谢你的帮助。

回答

2

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

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

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

rootViewController.tabBarController.delegate = self您的应用程序委托内部。

或者,您也可以通过在左窗格中选择对象列表中的标签栏控制器和去身份检查,改变从UITabBarController类的自定义类的tabBarController改变自己的自定义类的故事板子类。

+0

好,所以没有任何错误,只是现在它没有任何代理函数来处理tabbar?如果是这样,这只是一个桌面视图,如果在选择另一个选项卡时它会变为默认值,这将是实用的。然后我会在viewWillAppear中解决这个问题。 – ingenspor 2012-07-22 15:05:34

+0

对,我想大多数人会期待这种行为。 – 2012-07-22 17:55:38