如何在UINavigationController中覆盖initWithRootViewController方法?
xcode为我生成的唯一方法,其中包括loadFromNibName和loadView等方法。这些方法不会被调用,我需要在启动时向导航控制器添加NSNotification。
我知道它看起来有点像以下但我不知道该方法的主体是什么
- (id)initWithRootViewController:(UIViewController *)rootViewController
{
// what goes here?
}
修改 我想这个问题确实是“如何在初始化期间自定义UIViewCOntroller”
修改2
我的导航控制器标题
@interface AccountViewNavigationController : UINavigationController {
}
@end
实例化我的UINavigationController就像这样会导致没有启动方法达到断点
accountViewNavController = [[UINavigationController alloc] initWithRootViewController:accountView];
就像我实例化那样,loadView确实被调用....但它被多次调用
accountViewNavController = [[UINavigationController alloc] init];
[accountViewNavController initWithRootViewController:accountView NO];
我对这个阶段非常困惑。
答案 0 :(得分:2)
使用与覆盖任何其他init方法相同的基本结构:
- (id)initWithRootViewController:(UIViewController *)rootViewController
{
if ((self = [super initWithRootViewController:rootViewController])) {
// Your modifications go here
}
return self;
}
请注意,Apple声称UINavigationController“不打算用于子类化”,但它们并不绝对禁止它。我想这意味着“不要试图通过搞乱内部消息流来改变类的工作方式”。