有2个应用程序A和B。
应用A 具有用于打开应用 B 的 URL。
应用程序 B 打开后,它必须将 5 个视图控制器加载到导航堆栈上,这是通过以下代码完成的:
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
后面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
}
}
但是代表们没有被召唤。任何有关如何将数据正确传递到堆栈上所有ViewController
的帮助将不胜感激。
对于相关的类,我们使用委派。但是 不相关的类 ,对于这些,我们使用通知。在您的情况下,将需要通知来实现并将数据从一个 VC 传递到另一个 VC。
更好的方法是在创建控制器时创建/设置变量。