我已经阅读了一些建议的帖子,这些帖子可以帮助解决此问题,但找不到与此特定问题相关的内容。
我需要在控制器上设置一个属性,这是在应用程序委托中进行的设置。在上一个使用导航栏的任务中,此方法有效:
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey : Any]?) -> Bool {
// Override point for customization after application launch.
// Create an ItemStore to hold list of items
let itemStore = ItemStore()
// Access the ItemsViewController and set its item store
let itemsController = window!.rootViewController as! ItemsViewController
itemsController.itemStore = itemStore
return true
}
但是,创建一个类似的程序时,我需要使用tab栏,但不能使它正常工作并继续遇到上述错误,请让editcontroller = tabcontroller。 -线
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
// Create an pindatabase
let pinDataBase = PinDatabase()
// Access the pairsViewController and set its database
let tabController = window!.rootViewController as! UITabBarController
// this edit controller line is where I am stuck
let editController = tabController.tabBar as! EditViewController
editController.pinDataBase = pinDataBase
return true
}
错误是:
致命错误:解开可选值时意外发现nil
我要设置属性的控制器不是根控制器,而是第三个选项卡(如果有帮助的话)。
答案 0 :(得分:0)
您的问题是您尝试将UITabBar
投射到您的EditViewController
。您需要从标签栏控制器访问视图控制器阵列,并访问实际上是EditViewController
的视图控制器。
let editController = tabController.viewControllers[2] as! EditViewController
这将访问第3个视图控制器并根据需要进行投射。