Я новый программист iOS и пытаюсь создать приложение, которое включает следующий поток:
-> UITabBar -> UINavController -> UITableViewController.
Изначально программа работала, когда у меня был следующий поток:
-> UINavController -> UITableViewController
Но когда я добавил UITabBar (с помощью метода Embed In), у меня возникли две проблемы:
1) Преобразование начального представления из UITableView в UITabBarView.
2) Данные, которые были восстановлены из Архива телефона, не загружаются в TableView.
Мне удалось устранить проблему приведения с идентификаторами UIStoryboard, но я не уверен, что таким образом я создал вторую проблему, заключающуюся в неправильной передаче данных в UITableView.
Проблема приведения произошла в коде appDelegate. Вот оригинальный код, который у меня был до включения UITabBarView:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let navController = window!.rootViewController as! UINavigationController
let SLBprojectController = navController.topViewController as! GR8TableView
SLBprojectController.SLBprojectDB = thisSLBprojectDB
return true
}
Проблема с вышеприведенным кодом заключалась в том, что он сказал мне, что не может преобразовать TableViewController (GR8TableView) в UITabBarView. Мне удалось это исправить, выполнив поиск по форумам StackOverflow, выполнив следующее:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let tabBarIntial : UITabBarController = mainStoryboardIpad.instantiateViewController(withIdentifier: "TabBar") as! UITabBarController
let navigationController:UINavigationController = mainStoryboardIpad.instantiateViewController(withIdentifier: "navController") as! UINavigationController
let navigationController1:UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "ViewController1")
let SLBprojectController = navigationController.topViewController as! GR8TableView
SLBprojectController.SLBprojectDB = thisSLBprojectDB
tabBarIntial.viewControllers = [navigationController, navigationController1]
tabBarIntial.selectedIndex = 0
return true
}
Но после того, как я исправил проблему «приведения», у меня возникли проблемы с загрузкой данных в TableView. Не уверен, что эта проблема связана с тем, как я исправил проблему с кастингом.
Любая помощь будет высоко ценится!