【问题标题】:How to Connect More than One View Controller to Navigation Controller如何将多个视图控制器连接到导航控制器
【发布时间】:2020-08-08 15:40:21
【问题描述】:

我有以下情节提要:

“Home”是默认的视图控制器。当您按下左上角的三行按钮时,菜单视图控制器会滑出(就像侧面菜单一样)。如您所见,在菜单中有四个代表菜单项的表格单元格。当按下一个单元格时,我有一个相应的函数被调用。我希望在按下单元格时显示最右侧的视图控制器。

问题出在这里:我希望最右边的视图控制器继承 Home 视图控制器的属性,这样导航标题和按钮仍然存在。我怎样才能做到这一点?

【问题讨论】:

    标签: ios swift xcode uinavigationcontroller storyboard


    【解决方案1】:

    解决办法如下:

    确保导航和右视图控制器是segued(在Interface Builder中按Ctrl +拖动)

    调用@bebzerk 回答中所述的代码:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let transition = storyboard.instantiateViewController(withIdentifier: "RightViewController") as! RightViewController
    navigationController?.pushViewController(transition, animated: true)
    

    现在返回界面生成器,将 UINavigationItem 和 UIBarButtonItem 添加到视图控制器。将按钮的图像设置为三行,并将导航项的标题设置为您希望在顶部显示的名称。

    在右侧视图控制器的 ViewController Swift 文件中,Ctrl + 拖动条形按钮项并创建 IBAction 函数。这将在菜单按钮(在最右侧的视图控制器被按下)时调用。对我来说,这个类是从 HomeViewController 扩展而来的,所以在函数中,只是调用了 super 方法。它应该是这样的:

    @IBAction override func menuTapped(_ sender: UIBarButtonItem) {
            super.menuTapped(UIBarButtonItem())
        }
    

    这样应该就能实现想要的功能了。

    【讨论】:

      【解决方案2】:

      你试过这种方式吗?

      let storyboard = UIStoryboard(name: "Main", bundle: nil)
      let transition = storyboard.instantiateViewController(withIdentifier: "RightViewController") as! RightViewController
      navigationController?.pushViewController(transition, animated: true)
      

      它应该打开你的最右边的视图控制器并让它继承你的家庭控制器,就像一个后退按钮

      测试一下,告诉我它是否对你有好处。

      【讨论】:

      • 不,这不起作用。当我有这个时会发生什么,当我按下单元格时,它会将我带到一个视图,而不是三行按钮,有一个后退按钮将我带回主视图控制器
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 2016-09-06
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多