从本质上讲,从导航控制器的子视图中推送新视图控制器的正确方法是什么。
问题是导航视图的子视图不会继承self.navigationController
(nil
)
原因是我需要单独的控制器用于导航栏视图&主视图,但都需要推动新的控制器。
如果有人能告诉我这样做的正确方法,我愿意改变这种模式。
此外:
AppDelegate *del = (AppDelegate *)[UIApplication sharedApplication].delegate
[del.navigationController pushViewController:vc animated:YES];
不起作用,因为委托控制器为nil
。
答案 0 :(得分:1)
在UIView上创建以下类别。
@interface UIView (GetUIViewController)
- (UIViewController *)viewController;
@end
@implementation UIView (GetUIViewController)
- (UIViewController *)viewController;
{
id nextResponder = [self nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return nextResponder;
} else {
return nil;
}
}
@end
现在从subView获取SuperView。
mySuperView = [mySubView superview];
然后从创建的类别中调用该方法。
mySuperViewController = [mySuperView viewController];
现在,使用此viewController,您可以访问navigationController。
我没有尝试过上面的代码和方法,但我希望它能够正常工作。
答案 1 :(得分:1)
您可以尝试两种方式
1.使用superViewController的navigationController推送你的viewController
2.在NavigationController中嵌入当前的viewController,以便navigationController不会为nil