有时候调用导航控制器的push和pop方法时,当前控制器不能响应,常见于UISegment添加的子控制器中调用失效。
原因应该是添加自控制器时并没有给自控制器设置导航控制器,并且没有将子控制器的导航控制器添加为父级控制器的自控制器,导致没有navigationController响应push和pop方法。
此时可以将以下方法声明在子控制器中,并通过该方法获取到能响应的控制器,再通过获取到的控制器的导航控制器调用push和pop方法
- (UIViewController *)getviewController {
for (UIView* next = [self.view superview]; next; next = next.superview) {
UIResponder *nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)nextResponder;
}
}
return nil;
}
网友评论