我使用XCode 4.2中的界面构建器创建了tabbarcontroller
(及其默认的两个视图控制器)。
但是,当我运行应用程序时,标签栏似乎被锁定,我无法选择其他标签。那是为什么?
PS:我没有更改标签栏的任何属性或XCode中的tabbarcontroller
。
答案 0 :(得分:1)
你是如何创建标签栏的?您是否有初始视图,然后转到“编辑”菜单 - >嵌入 - > Tabbar控制器还是没有任何操作并拖动标签栏控制器?
无论哪种方式,我只是用一个视图创建了一个项目并尝试了两种方式 - 但该选项卡仍然有效。 (如果通过从实用程序窗格拖动选项卡栏控制器来执行此操作,则必须选择“是初始视图控制器”,如果替换使用项目创建的原始视图。
在您发表评论后编辑:
你真的不需要在你的AppDelegate中合成标签栏控制器 - 故事板会处理这个问题,你可以从代码中引用它而不需要生成合成器。只需在标签栏控制器中拖动即可在故事板中设计布局(默认情况下,这将自动创建两个视图控制器)。然后选择标签栏控制器并在实用程序面板下,您将看到“是初始视图控制器”复选框。确保已选中。然后运行你的项目。
答案 1 :(得分:0)
道歉 - 因为您使用XCode 4.2而假设您正在使用故事板。也许您可以尝试在代码中完全实例化tabbar控制器,而不是完全使用IB。这就是我通常做的事情....
// Create the main tabbar controller
tabbarController = [[UITabBarController alloc] init];
// Create the first view controller
MyFirstViewController *v1 = [[MyFirstViewController alloc] initWithNibName:@"MyfirstViewController" bundle:nil];
[v1 setTitle:@"Tab1"];
// Create second view controller
MySecondViewController *v2 = [[MySecondViewController alloc] initWithNibName:@"MySecondViewController" bundle:nil];
[v2 setTitle:@"Tab2"];
// Make an array of controllers for the tabbar
NSArray *tabbarControllerArray = [NSArray arrayWithObjects:v1, v2, nil];
// Set the view controllers used by the tabbar controller
[tabbarController setViewControllers:tabbarControllerArray];
// Release views (retained elsewhere)
[v1 release];
[v2 release];
// Add the controller to the subview
[window addSubview:[tabbarController view]];
// Make key and visible
[self.window makeKeyAndVisible];
以这种方式拍摄,看看你是如何上场的。