如何将多个View Controller连接到导航控制器

问题描述 投票:-1回答:2

我有以下情节提要:Storyboards

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

这里是问题:我希望最右边的视图控制器继承Home视图控制器的属性,以便导航标题和按钮仍然存在。我该如何实现?

ios swift xcode uinavigationcontroller storyboard
2个回答
0
投票

您尝试过这种方式吗?

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

它应该打开您的最右视图控制器,并使其像继承按钮一样继承您的家庭控制器

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


0
投票

这是解决方法:

请确保已设置导航和右视图控制器(在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())
    }

这应该实现所需的功能。

© www.soinside.com 2019 - 2024. All rights reserved.