我希望我的视图控制器有自己的导航栏。我发现这比显示/隐藏现有导航栏更容易。以下代码正在运行。 这是反模式还是相对常见的做法?
MyViewController *viewController = [[MyViewController alloc] init]
autorelease];
UINavigationController *wrapper = [[[UINavigationController alloc]
initWithRootViewController:viewController]
autorelease];
[self.navigationController presentViewController:wrapper
animated:YES
completion:nil];
答案 0 :(得分:5)
要呈现带有导航栏和自己的导航堆栈的模态视图控制器,您发布的代码完全正确。你唯一应该注意的是将第二个UINavigationController推送到现有的导航控制器的堆栈上 - 这会给你带来麻烦。
答案 1 :(得分:1)
我需要在上面创建NavigationBar的任何静态UIView都将在Interface Builder中创建。当你以模态方式呈现一个viewController时(我假设),你需要一个完整的UINavigationController来决定。只要你最终没有在另一个navigationController中推送一个navigationController的rootView,这将在第一个创建一个navigationBar,没什么大不了的。
当我提交“登录”类型表格或某些表格时,会有一个“完成”和“取消”按钮,我只会创建一个包含这些项目的XIB并显示它。
如果您正在寻找一种快速的方法来完成所有代码,那么您所做的事情并没有错。您可以轻松访问tintColor和标题。您可以在IB中执行此操作,但您必须拥有一个IBOutlet才能连接所有对象。
答案 2 :(得分:0)
在Swift中:
let mainViewController = MainViewController()
let navigationController = UINavigationController(rootViewController: mainViewController)
present(navigationController, animated: true, completion: nil)