我目前已将应用程序设置为以UINavigationController作为初始视图,该应用程序以UITableViewController作为其根视图控制器。该应用程序可以正常运行直到这一点。我在AppDelegate.swift中有以下代码:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let favLibrary = FavLibrary()
let navController = window!.rootViewController as! UINavigationController
let favController = navController.topViewController as! FLViewController
favController.favLibrary = favLibrary
return true
}
我正在尝试实现UITabBarController,以便可以使用Tab栏在同一级别的两个UITableViewController(收藏夹和库)之间进行切换。
我将每个VC嵌入到其自己的导航控制器中,然后将两个导航控制器嵌入到一个选项卡栏控制器中。
运行该应用程序时,它崩溃并显示以下错误:
无法将类型'UITabBarController'(0x115f9e430)的值强制转换为'UINavigationController'(0x115f971d0)。 2018-09-27 15:49:43.811377-0700 appName [3675:954448]无法将类型'UITabBarController'(0x115f9e430)的值强制转换为'UINavigationController'(0x115f971d0)。
我该如何纠正AppDelegate中的代码以保留新功能的选项卡栏和导航控制器的功能?
答案 0 :(得分:0)
如果我正确理解了您的问题,我想您应该首先访问tabBarController,然后检索其中包含的视图控制器,该视图控制器应该是导航控制器的列表。然后,您可以将视图控制器放入选定的导航控制器内:
let tabBar = window!.rootViewController as! UITabBarController
let targetTabNav = tabBar.viewControllers![1] as! UINavigationController // change index to what you want
let targetVc = targetTabNav.viewControllers.first!
// Do what you want with the target Vc ...