![](/img/trans.png)
[英]Replace a UIViewController in the UINavigationController hierarchy
[英]UIViewController Hierarchy
如果有多個視圖(例如視圖1,視圖2,視圖3,視圖4和視圖5),並且它們位於導航堆棧中,而視圖5是當前視圖(位於頂部),則如何訪問編寫的方法在view5的view5控制器中? 就像在view5控制器中創建view3控制器實例然后調用該方法一樣嗎? 但這不是我相信的理想方法。 在這種情況下最好的方法是什么?
您可以通過訪問導航控制器堆棧來訪問它-
NSMutableArray *activeControllerArray = [self.navigationController.viewControllers mutableCopy];
Controller3 myController;
For(int i = 0, i <[activeControllerArray count], i++) {
if([[activeViewController objectAtIndex:i] isKindOfClass:[Controller3 class]) {
myController = [activeViewController objectAtIndex:i];
}
}
現在,您可以執行所需的操作。
NSMutableArray *controllers = [[self.navigationController.viewControllers mutableCopy] autorelease];
ABCController *controller = [controllers objectAtIndex:2]; //ABCController is the name of conroller class
[controller methodName] ;
這種方法應該有效
我建議創建一個基類,從該基類派生view1,view2,... view 5。 基類將包含此方法,從而使所有類(view1,view2,...)都可以訪問此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.