UITabBar的UITabBarController功能

时间:2012-04-17 23:01:45

标签: ios5 xamarin.ios interface-builder uitabbar

我正在使用故事板制作带有界面构建器的应用程序。

我想要一个没有选择项目的标签栏。这可以通过设置

来完成
TabBar.SelectedItem = null;

但如果您尝试这样做,则会收到以下错误:

'Directly modifying a tab bar managed by a tab bar controller is not allowed.'

所以我不能使用标准UITabBarController。我创建了自定义UIViewController,并添加了UITabBar。在标签之间切换工作正常,没有选择也正常工作。

但我不知道如何使用标签栏从我的自定义视图控制器显示我的其他视图控制器。请记住,我正在使用interfacebuilder,所以我不能只在代码中创建我的视图控制器作为新对象并将它们添加到视图中。 (如UITabBar funcionality without UITabBarController中所述)

那么如何在不使用UITabBarViewController的情况下显示自己的视图?


编辑:仍然没有找到解决方案,但我做了一个hacky修复。简单地创建另一个标签栏并将其放在原始标签栏的顶部。收听这些事件并使用SelectedIndex更改显示的视图。然后添加一些功能,选择/取消选择您自己的标签栏上的项目。

1 个答案:

答案 0 :(得分:1)

实际上,即使您从IB设计了其他人UIViewControllers,也可以从代码中实例化它们。您可能需要使用框架和自动调整属性来使它们适合您希望它们显示在主视图中的部分,但这是可能的。

所以,知道这一点,一个简单的解决方案就是在主UIView中创建一个简单的UIViewController(我们称之为'tabFrame'),它会从UITabBar的顶部填充屏幕{1}}到屏幕顶部;实例化与您的标签相对应的UIViewController,并将其视图添加为tabFrame的子视图。现在您只需从标签栏中捕捉项目选择以隐藏或显示所需的子视图。

希望我足够清楚,否则请毫不犹豫地提问!

编辑:今天早上指出,在故事板上下文中,您可以从代码中有效地实例化viewControllers / scene,但是为了不丢失设计器设置,必须 NOT 完成在故事板编辑器中为VC设置标识符后,直接调用其构造函数,但通过StoryBoard.InstantiateViewController("vc_identifier")调用。

例如,请参阅http://docs.xamarin.com/ios/recipes/General/Storyboard/Storyboard_a_TableView