Я пропустил свой первый контроллер представления (страницу входа), как только пользователь успешно войдет в мое приложение и решит сохранить их учетные данные.iOS пропускает вход в систему с помощью rootViewController, вызывая ошибку черной полосы в вложенных табличных видах.
Мой новый контроллер корневого представления - это TabBarController, потому что навигация моего приложения использует TabBar.
Однако в приложении у меня есть TableView, которым предшествует их соответствующий NavigationController. В этих TableViews я получаю черную полосу над TabBar. Если я перейду к следующему TableView, тогда черная полоса удвоится, и если я войду в следующий TableView, тогда черная полоса теперь будет в 3 раза больше первой.
Вот несколько скриншотов; из-за чувствительных данных я добавил серые полосы для маскировки живых данных.
У меня есть это в моем AppDelegate (используя Swift) в моем методе didFinishLaunchingWithOptions:
if let api_key = NSUserDefaults.standardUserDefaults().stringForKey("key") {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tabBarController = storyboard.instantiateViewControllerWithIdentifier("TabBarC") as! MyTabBarController
if let window = self.window {
window.rootViewController = tabBarController
}
}
Должен ли я инстанцировании внутренние навигации контроллеры? Если да, то как это сделать, так как у меня в TabBar уже есть 4 NavigationControllers для 4 вкладок, где бы я вставлял дополнительные NavControllers, найденные глубоко внутри приложения?
UPDATE: я был в состоянии решить черный бар ошибка по
- закрытия проекта
- сжатия Main.storyboard файл сохранить в качестве резервного
- удален файл Main.storyboard из папки проекта
- добавлен в предыдущую версию Main.storyboard из резервной копии
Я также нашел альтернативный способ «пропустить» мой экран входа в систему, не создавая экземпляры контроллеров представлений в своем делете приложения.
Код псевдео В раскадровке добавьте идентификатор к сеансу между контроллером просмотра входа и tabBar.
In the login VC
view did load
hide the textboxes
if key exists {
performSegue(id: <segwayid>
} else {
show the login textboxes
"4 НавигацияКонтроллеры для 4 вкладок". У вас уже есть 4, и вам еще нужно больше. Похоже, что весь ваш дизайн нуждается в повторном использовании. – Gruntcakes
Вложенные TableViews зависят от контекста, следовательно, необходимость вложенности. например Первая вкладка предназначена для проектов, а следующие вложенные таблицы видят задачи для выбранного проекта. –
Имеет ли экран «Записи времени» свой собственный навигационный контроллер, или он помещен в ту же самую, что использовался предыдущим экраном? – chedabob