当前位置: 首页 > 知识库问答 >
问题:

当View Controller嵌入到导航控制器中时,以模式显示选项卡栏视图?

干子瑜
2023-03-14

我的故事板是这样安排的。

红色:搜索到...
橙色:嵌入了...
绿色:视图控制器的导航控制器

我想让我的中间选项卡视图(绿色)呈现自己的模式,有点像reddit应用程序如何做它的中间‘张贴到reddit’按钮。当这个中间视图被取消时,将返回到先前打开的原始选项卡。如何才能做到这一点呢?

共有1个答案

公西志文
2023-03-14

一种方法是...

给第二个选项卡UINavigationController一个Storyboardid--比如“CreateItemsNavController”--然后在自定义选项卡栏控制器类中实现ShouldSelect

如果选择了第二个选项卡(选项卡与所有数组一样,都是从零开始的),则实例化您的“CreateItemSnavController”并显示它,返回shouldselectfalse:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

    guard let indexOfTab = viewControllers?.firstIndex(of: viewController) else {
        return true
    }
    
    if indexOfTab == 1 {
        if let vc = storyboard?.instantiateViewController(withIdentifier: "createItemsNavController") as? UINavigationController {
            present(vc, animated: true, completion: nil)
        }
        return false
    }
    
    return true

}

如果你要走这条路,你也可以(这可能是一个好主意)用一个空白的视图控制器替换你的故事板中的选项卡连接...因为您可能希望避免由选项卡栏控制器加载它,即使您从不允许激活该选项卡。

作为附带说明:这可能是一个非常混乱的UX。用户(和苹果)喜欢符合常见界面动作的应用程序。由于用户熟悉选项卡栏,选择一个选项卡按钮就会切换到该选项卡,因此以这种方式更改功能可能会受到欢迎。

当然,这是你的应用程序,还有你的设计选择...

 类似资料:
  • 我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码 这就像预期的那样。 然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。

  • 问题内容: 题 如何仅使用按钮的touch up内部事件从一个视图控制器导航到另一个视图控制器? 更多信息 我在一个示例项目中尝试执行的步骤是: 创建示例单视图应用程序。 为用户界面(ViewController2)添加一个新文件->具有XIB的Objective-C类。 在ViewController.xib中添加一个按钮,并控制单击ViewController.h的按钮以创建内部补全事件。 转

  • 我有一个导航视图控制器,它会在操作时向选项卡栏视图控制器发送一个序列。因此,选项卡式视图控制器继承了导航栏。我正在尝试将标题应用于连接到选项卡栏视图控制器的其中一个视图控制器,但通过代码设置标题对我不起作用。有人知道为什么会这样吗? 这是我的故事板的图片: 带有注销按钮的视图控制器是我试图在导航条(代码)中设置标题的地方: 导航控制器中嵌入的视图控制器触发到选项卡栏控制器的顺序:

  • 问题内容: 创建on 之后,如何在Swift上以编程方式添加 导航 界面。这是我当前的代码: 我在看文档。它具有以下准则 问题,我不知道如何在Swift上正确执行此操作。我希望在中的单独方法中设置和修改。有什么想法吗? 问题答案: 要创建导航控制器,请使用: 然后将其放入数组中: 但是,只有在加载视图控制器后,才能将UIControls添加到导航栏。在这是不可能的,因为的导航栏为零。正确的方法是在

  • 问题内容: 我有一个常规的Twitter Bootstrap 3标签。我要做的就是控制 一个元素来控制多个容器。 在此示例中,当我更改标签时,仅第一个被更改。我要两个容器都改变,而不仅仅是第一个。 谢谢! 问题答案: 我将 data-target 属性添加到a元素并更改第二个tab内容中的id 我修改了这行 您的: 我的更新: 第二个选项卡内容,您的: 我的更新:

  • 就我一直在寻找的情况而言,我没有为我的代码提出一个好的最终解决方案。我试图实现类似这样的布局: 动作栏 null