作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有 2 个应用程序 A 和 B。
应用程序 A 有一个打开应用程序 B 的 URL。
App B 打开后,它必须将 5 个 View Controller 加载到导航堆栈上,这是通过以下代码完成的:
let LandingVC = self.storyboard?.instantiateViewControllerWithIdentifier("LandingVC") as! LandingVC
let Dashboard = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") as! Dashboard
let PlayerVC = self.storyboard?.instantiateViewControllerWithIdentifier("PlayerVC") as! PlayerVC
let PlayerDetailVC = self.storyboard?.instantiateViewControllerWithIdentifier("PlayerDetailVC") as! PlayerDetailVC
let ScoreReportVC = self.storyboard?.instantiateViewControllerWithIdentifier("ScoreReportVC") as! ScoreReportVC
let viewControllersList = [LandingVC, Dashboard, PlayerVC, PlayerDetailVC, ScoreReportVC]
self.navigationController?.setViewControllers(viewControllersList, animated: false)
来自 ScoreReportVC
我需要能够在以前的 ViewController
上设置变量,以便用户可以导航到以前的屏幕,即使他们从另一个应用程序触发了该应用程序。
这是我尝试过的:在 ScoreReportVC
后面的之前的 View Controller 中定义了一个协议(protocol),这些 Controller 位于堆栈上和 ScoreReportVC
内部,如下所示:
for viewcontroller in self.navigationController?.viewControllers {
if viewcontroller is PlayerDetailVC {
PlayerDetailVC.delegate = self
}
if viewcontroller is PlayerVC {
PlayerVC = self
}
if viewcontroller is Dashboard {
Dashboard.delegate = self
}
if viewcontroller is LandingVC {
LandingVC.delegate = self
}
}
但是委托(delegate)们没有接到电话。任何关于如何正确地将数据传递到堆栈上的所有 ViewController
的帮助将不胜感激。
最佳答案
对于相关类,我们使用委托(delegate)。但是对于那些不相关的类,我们使用通知。在您的情况下,需要通知来实现并将数据从一个 VC 传递到另一个 VC。
关于ios - 如何将数据传递到 UINavigationController 堆栈上的第 n 个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703786/
我是一名优秀的程序员,十分优秀!