如何将数据传递到 UINavigationController 堆栈上的第 n 个视图控制器



有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。

更好的方法是在创建控制器时创建/设置变量。

相关内容

  • 没有找到相关文章

最新更新