【问题标题】:Swift View Controller and Navigation ControllerSwift 视图控制器和导航控制器
【发布时间】:2015-08-21 19:12:48
【问题描述】:

添加 ViewController 时是否应该始终添加 Navigation Controller?使用导航控制器有什么好处?

我知道导航控制器会给你一个后退按钮,但可以使用导航栏并添加你自己的后退按钮来完成。

现在从一个屏幕转到另一个屏幕似乎并没有那么复杂:

继续到另一个视图代码:

performSegueWithIdentifier("LoginViewSegue", sender: self)

导航到另一个视图:

let loginController = storyboard?.instantiateViewControllerWithIdentifier("LoginView") as! LoginViewController

self.presentViewController(loginController, animated: true, completion: nil)

我知道序列代码只是一个衬里,而另一个是两个衬里。但这似乎没什么大不了的。我知道在 sequ 上,您也可以获得可以使用的辅助类。就像在实际调用序列之前执行的 prepareForSegue 一样。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)

但是调用视图控制器可以让你在调用视图之前运行预代码。

这只是风格问题还是两者之间有优势?

【问题讨论】:

    标签: swift


    【解决方案1】:

    这只是风格问题

    您似乎在问两个不同的事情:一方面是导航控制器与呈现的视图控制器,另一方面是代码与故事板。

    导航控制器与显示控制器

    这是视图控制器和视图行为之间的关系问题。

    • 导航控制器(推送和弹出)是关于拥有单个视图控制器的堆栈。导航控制器提供自己的视图,带有导航栏和工具栏,您可以自动获得导航栏的全部内容以及后退按钮。您的视图控制器是导航控制器的子节点,您的视图控制器的视图位于该界面内。

    • 呈现的视图控制器(呈现和关闭)是关于替换呈现它的视图控制器。视图控制器处于呈现和呈现视图控制器的关系(不是父子关系)。后者的观点覆盖(部分或全部)或替代了前者的观点。

    这些并不是唯一的选择。选项卡栏控制器和页面视图控制器是其他内置父视图控制器的可能性。您可以编写自己的自定义父视图控制器。使用对你的应用架构有意义的东西。 Apple 只是试图提供一种标准词汇表,帮助您轻松编写应用程序,并帮助用户了解我们在哪里以及要去哪里(以及我们来自哪里),因为视图来来去去。

    代码与故事板

    您可以在情节提要中执行的任何操作都可以使用纯代码执行。这完全取决于您。

    【讨论】:

    • 我可以为不同的视图使用一个导航控制器吗?
    • 我不知道这个问题是什么意思。您可以根据需要将任意数量的视图控制器推送到堆栈上。这是一个堆栈。 - 阅读我的书可能会对您有所帮助:apeth.com/iOSBook/ch19.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多