2016-10-18 5 views
0

instantiateViewController(withIdentifier: String)を使用せずにUIViewControllerにアクセスする方法はありますか?私はショーセグを使って別のUIViewControllerの中から関数tableView.ReloadData()を呼び出す必要があります。したがって、最初のUIViewControllerを再びインスタンス化したくありません。インスタンス化せずにstoryboardIDを使用してUIViewControllerにアクセスする

ありがとうございました。

答えて

1

UINavigationControllerスタックからアクセスできます。それは一方のコントローラの前にある場合、あなたはそれが(スタックに)マイナス2総viewcontrollersを使用してアクセスすることができましょう

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 
+0

おかげで、あなたの答えは働きました!唯一の問題は、値2をインデックスとしてハードコーディングすることはあまり優雅ではないことです。たとえば、別の中間の 'UIViewController'が追加された場合、値を3に更新する必要があります。しかし、それは"開発者 "ビューで使用されるように私の実装には十分です:)乾杯! – Frederik

+1

偉大な、ちょうどあなたがビューコントローラをループし、一致するものを見つけることができることに注意してください – xmhafiz

関連する問題