Доступ к UIViewController с использованием storyboardID без его создания

#swift #xcode #uiviewcontroller

#swift #xcode #uiviewcontroller

Вопрос:

Есть ли какой-либо способ получить доступ к a UIViewController без использования функции instantiateViewController(withIdentifier: String) . Я должен вызвать функцию tableView.ReloadData() изнутри другой UIViewController , к которой я перешел, используя show segue, и поэтому я не хочу снова создавать экземпляр initial UIViewController .

Спасибо.

Ответ №1:

Вы можете получить доступ через UINavigationController stack. Допустим, если раньше это был один контроллер, вы можете получить к нему доступ, используя общее количество viewcontrollers (в стеке) минус 2

 let previousController = self.navigationController?.viewControllers[(self.navigationController?.viewControllers.count)! - 2] as! YourViewController
  

более упрощенный

 let controllerIndex = (self.navigationController?.viewControllers.count)! - 2
let previousController = self.navigationController?.viewControllers[controllerIndex] as! YourViewController
  

Комментарии:

1. Спасибо, ваш ответ сработал! Единственная проблема заключается в том, что жесткое кодирование значения 2 в качестве индекса не слишком элегантно. Если, например UIViewController , был добавлен другой промежуточный элемент, вам придется обновить значение до 3. Но это достаточно хорошо для моей реализации, поскольку оно должно использоваться в представлении «разработчика» 🙂 Приветствия!

2. Отлично, просто обратите внимание, что вы можете перебирать viewcontrollers и находить совпадающие