2

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

我想要一个标签栏,其中没有选择任何项目。这可以通过设置来实现

TabBar.SelectedItem = null;

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

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

所以我不能使用标准UITabBarController。我创建了一个 custom UIViewController,并添加了一个UITabBar. 在选项卡之间切换工作正常,并且没有选择也可以正常工作。

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

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


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

4

1 回答 1

1

事实上,即使你UIViewControllers从 IB 设计你的其他人,你也可以从代码中实例化它们。您可能需要对 frame 和 autoresizing 属性进行一些操作,以使它们适合您希望它们显示在主视图中的部分,但这是可能的。

因此,知道这一点,一个简单的解决方案是UIView在您的 main 中创建一个简单的(我们将其称为“tabFrame”)UIViewController,它从您的顶部到屏幕顶部填充UITabBar屏幕;实例化UIViewController与您的选项卡相对应的视图并将其视图添加为tabFrame. 现在您只需要从标签栏中捕获项目选择即可隐藏或显示所需的子视图。

希望我足够清楚,否则请不要犹豫!

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

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

于 2012-05-03T21:12:02.997 回答