#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 и находить совпадающие