0

我有一个带有多个选项卡的选项卡栏应用程序,这一切都没有问题。每个选项卡都会转到一个新页面并打开一个新视图。

我想要做的是添加一个不会打开新页面或新视图控制器的选项卡,但会在当前页面顶部弹出一个选择器视图。然后从该选择器中选择一个选项将跳转到新视图。

所以在标签中:

第 1 页/第 2 页/第 3 页/选择器

前 3 个选项卡中的任何一个都会立即跳转到新页面。第 4 个选项卡打开带有第 4 页/第 5 页/等选项的选择器,然后选择其中一个进入该页面。

如果您取消选择器视图,应用程序将停留在当前页面/选项卡上。

这在技术上是否可行,Apple 准则是否允许这种行为?

4

2 回答 2

4

您将需要继承 UITabBarController,并实现此方法:

- (BOOL)tabBarController:(UITabBarController *)tbController shouldSelectViewController:(UIViewController *)viewController
{
    NSInteger tabIndex = [[tbController viewControllers] indexOfObject:viewController];

    //Check to see if the selected index is the one you want to do something else, in this example, it's the second tab, so index is 1
    if(tabIndex == 1)
    {
        //Write the code you need to pop up the picker here.
        return false;
    }

    return true;
}

这将阻止选项卡栏实际显示新的视图控制器,而是您可以对其进行编码以执行您想要的任何操作。请注意,您仍然必须为该选项卡设置某种占位符视图控制器,即使您永远不会查看它。它只需要保留一个位置,以便标签栏控制器知道它需要有一个标签。

于 2013-05-10T18:28:07.513 回答
2

首先,关于 Apple 指南,这是允许的,因为您可以决定应用程序是否应在用户点击 UITabBarItem 时加载新的视图控制器,但在用户点击 UITabBarItem 时显示 UIPickerView 并不直观,也不符合苹果 UI 模式。基本上,标签栏项目用于显示应用程序最重要的功能,我认为 piker 视图不是其中之一。

但是,如果您不关心苹果 UI 模式(这不好 :))),您可以使用darkfoxmrd.

于 2013-05-10T18:32:17.940 回答