Присутствует viewController из AppDelegate падает / пустой экран
Я сталкиваюсь с проблемой, что, когда я хочу представить представление программно, мое приложение вылетает / показывает пустой черный вид.
Открытие vc происходит, когда пользователь нажимает на уведомления. У меня есть панель вкладок, контроллер навигации и вид, который доступен с первого vc в панели вкладок.
Когда я хочу нажать на vc, мое приложение вылетает, однако, когда я удаляю все в viewDidLoad() в моем, чтобы его подтолкнули к vc ( ChatVC), мое приложение отображает vc, но пустой и черный. Пуш-код моего приложения делегат. Речь идет не о chatvc, я пробовал каждый контроллер представления, который у меня есть, и он вылетает в одной точке.
let chatVc = AllChatsViewController()
if let tabbarControler = window?.rootViewController as? MainTabBarController {
tabbarControler.selectedIndex = 0
//tabbarControler.presentedViewController?.dismiss(animated: true, completion: nil)
if let homeNav = tabbarControler.viewControllers?.first as? UINavigationController {
homeNav.pushViewController(chatVc, animated: true)
print(followerId)
}
}
}
Обновить
if let chatPartnerId = userInfo["chatPartnerId"] {
let storyboard = UIStoryboard(name:"Chat", bundle: Bundle.main)
guard let chatVC = storyboard.instantiateViewController(withIdentifier: "MessageViewController") as? MessageViewController else {return}
chatVC.userId = chatPartnerId as! String
if let tabbarControler = window?.rootViewController as? MainTabBarController {
tabbarControler.selectedIndex = 0
tabbarControler.presentedViewController?.dismiss(animated: true, completion: nil)
if let homeNav = tabbarControler.viewControllers?.first as? UINavigationController {
homeNav.pushViewController(chatVC, animated: true)
}
}
Это теперь выдвигает, как и ожидалось, ViewController, но ни ViewDidLoad, ни любая другая функция не будут вызваны, любая идея?
1 ответ
Ты пробовал вместоlet chatVc = AllChatsViewController()
создать экземпляр из раскадровки? В раскадровке найдите ваш viewController и присвойте ему идентификатор (я буду использовать chatVC). затем let storyboard = UIStoryboard(name:"Main", bundle Bundle.main)
let chatVC = storyboard.instantiateViewController(withIdentifier: "chatVC")
Причина в том, что при использовании вышеописанного метода все ваши подпредставления инициируются и выкладываются автоматически, в отличие от вашего метода, где вы обязаны сделать это самостоятельно (чего вы, вероятно, не сделали, поэтому происходит сбой и тот факт, что если вы delete view загрузил строки, которые вызывают ваши подпредставления, которые он пропускает.)