【发布时间】:2018-03-28 01:01:56
【问题描述】:
设置: 在 Xcode 中创建样板 iOS Master-Detail 应用程序并运行它。每次单击主条目时,它都会重新创建 detailVC 并将其配置为显示新数据。
前提:这通常是我想要的,但有时它只是更改单个标签中的文本。重用现有的 DetailVC 不是更有意义吗? (至少在这种情况下)
那么最好的方法是什么?
思考:当我查看样板代码时,我看到 MasterVC 为 detailVC 创建了类作用域变量。
var detailViewController: DetailViewController? = nil
它在viewDidLoad 中设置了这个值,但它从不将它用于任何事情。嗯?在prepare(for:sender:) 我们得到这个代码
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
创建DetailViewController 的新实例。如果您在创建后添加断点并将其与类 var detailViewController 进行比较,您会发现它们是不同的。
UIStoryboardSegue 正在创建我的新 DetailViewController,可以通过查看文档轻松确认。
您不直接创建 segue 对象。相反,故事板 运行时在必须在两个视图之间执行转场时创建它们 控制器。
我可以删除行选择上的 segue 并在我的 detailVC 上手动调用该方法,这可能是最简单的,但 segue 在 IB 中是如此纯粹和可视化。我可能可以创建一个自定义转场。我还能做什么,是否有明确的“最佳”方式?
【问题讨论】:
标签: ios swift uisplitviewcontroller