如果有多个视图-例如视图1、视图2、视图3、视图4和视图5,并且它们位于导航堆栈中,并且视图5是当前视图(在顶部),那么我如何在view5的控制器中访问用view3编写的方法?是否类似于在view5控制器中创建view3的控制器实例,然后调用该方法?但我认为这并不是理想的方法。这种情况下最好的方法是什么?
发布于 2011-12-29 01:31:49
你可以通过访问导航控制器堆栈来访问它-
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];
}
}现在,您可以执行所需的操作。
发布于 2011-12-29 01:33:21
NSMutableArray *controllers = [[self.navigationController.viewControllers mutableCopy] autorelease];
ABCController *controller = [controllers objectAtIndex:2]; //ABCController is the name of conroller class
[controller methodName] ;这种方法应该是可行的
发布于 2011-12-29 01:33:35
我建议创建一个基类,view1、view2、...view 5将从中派生。基类将包含此方法,使其可供所有类(view1、view2等)访问。
https://stackoverflow.com/questions/8659106
复制相似问题