以编程方式显示到控制器的导航
Posted
技术标签:
【中文标题】以编程方式显示到控制器的导航【英文标题】:Show navigation to Controller programatically 【发布时间】:2020-10-31 08:36:46 【问题描述】:我正在将菜单 VC 从 StoryBoard 更改为编程操作。
当我想加载另一个 VC 时,我使用的是 Action Segue “Show”。
我使用的临时代码有效,但将 VC 弹出顶部。您能否以编程方式执行“显示”等效项,如果可以,如何操作?
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "SunriseSunsetResultsViewController")
self.present(newViewController, animated: true, completion: nil)
【问题讨论】:
怎么样,呃,show
? developer.apple.com/documentation/uikit/uiviewcontroller/…
嗨 - 我发现并推测它可能是答案,但没有在线上找到支持信息,例如 SO,关于人们如何使用它,因此这篇文章的原因。我尝试了各种实现,例如 func show(_ vc: DistanceFromSunViewController, sender: self ) 但无法破解...
好吧,我不知道你所说的“破解它”是什么意思。它确实有效,如果您在导航界面中。假设您在使用情节提要执行此操作时处于导航界面中,因此需要保持不变。
破解它是指让它工作。我曾尝试过 self、UITableViewCell、UINavigationController 等,但大多数时候编译器会返回“函数声明体中的预期 ''”样式错误。我确实尝试解决我自己的问题,但这似乎是那些更晦涩的命令之一,几乎没有网络支持信息。非常感谢您的指导。他们很感激。
“函数声明体中的预期''”样式错误“好的,但这与您提出的问题完全无关。
【参考方案1】:
要执行 Show segue 过去所做的事情,请将 present
替换为 show
:
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "SunriseSunsetResultsViewController")
self.show(newViewController, sender: self)
但是请注意,这将与present
执行相同的操作,除非self.navigationController
不是nil
。换句话说,除非导航控制器负责界面,否则您无法进行以前的横向导航。
您可以说pushViewController
等,而不是show
,但同样的警告也适用。只有导航控制器才能完成您之前所做的事情。
【讨论】:
以上是关于以编程方式显示到控制器的导航的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式创建的 iOS UITabBarController 未显示其“更多”导航控制器