gpt4 book ai didi

Swift - 在应用程序委托(delegate)中访问不同的 View Controller

转载 作者:行者123 更新时间:2023-11-30 10:03:10 24 4
gpt4 key购买 nike

app delegate 中,一个简单的应用程序只有 2 个屏幕:

  • 第一个屏幕是嵌入在导航 Controller 中的表格 View Controller
  • 第二个屏幕是一个 View Controller ,用于通过协议(protocol)/委托(delegate)/segue 将项目添加到第一个屏幕表

这是 app delegatedidFinishLaunchingWithOptions 的代码,我可以将第一个屏幕引用为 viewController[0]:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

let navController = self.window?.rootViewController as! UINavigationController
let courseListController = navController.viewControllers[0] as! CourseListController
courseListController.managedObjectContext = self.managedObjectContext

return true
}

如何引用中央屏幕上方、下方和旁边的屏幕?请给我建议一个解决方案。谢谢!

最佳答案

重要的是要记住, Storyboard中所有“外围” View Controller 的 View Controller 对象在执行访问它们的segue之前实际上并不存在,因此无法访问它们直接来自应用程序委托(delegate)。相反,您需要在创建每个 subview Controller 时将状态推送到每个 subview Controller ,无论源 View Controller 是什么。 Segues 是执行此操作的适当方法。

您可能希望在 Interface Builder 中为中央 View Controller 中的每个 Segue 分配一个唯一的 Segue 标识符。单击segue,然后在此处输入:

enter image description here

在中央 View Controller 中,实现 prepareForSegue(_:sender:),执行如下操作:

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject) {
switch segue.identifier {

case "SegueIdentifier1":

guard let destination = segue.destinationViewController as? ViewController1 else {
return
}

// set up your view controller here

case "SegueIdentifier2":

guard let destination = segue.destinationViewController as? ViewController2 else {
return
}

// set up your view controller here

// add additional segues as required

default:
break // unknown segue

}
}

关于Swift - 在应用程序委托(delegate)中访问不同的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com