我正在使用此代码以编程方式将UINavigationController添加到现有的UIViewController:
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let nav1 = UINavigationController()
let mainView = ReminderController(nibName: nil, bundle: nil)
nav1.viewControllers = [mainView]
self.window!.rootViewController = nav1
self.window?.makeKeyAndVisible()
现在我想为UINavigationController管理的NavigationBar添加标题,但主要是我收到此错误:
无法直接在由控制器管理的UINavigationBar上调用pushNavigationItem:animated:
我使用的代码:
let item = UINavigationItem(title: "Reminder")
nav1.navigationBar.pushNavigationItem(item, animated: false)
我试过的任何其他方法都给了我同样的错误。那么如何为该NavController添加标题?
NavBar现在看起来像这样:
答案 0 :(得分:2)
您的NavigationBar由NavigationController管理,因此您无法直接将项目推送到它。相反,你应该在mainView上设置navigationItem,而NavigationController将把它推到栏上
另外,查看UINavigationController的documentation,我想它可以让你更好地理解navigationController的工作原理。
这是来自它:
导航控制器构建导航栏的内容 动态使用导航项目对象(实例) UINavigationItem类)与视图控制器相关联 导航堆栈。
答案 1 :(得分:1)
在Objective-C
中 UIBarButtonItem *flipButton = [[UIBarButtonItem alloc]
initWithTitle:@"Flip"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(flipView:)];
nav1.navigationBar.navigationItem.rightBarButtonItem = flipButton;
在Swift中
let barBtnVar = UIBarButtonItem(barButtonSystemItem: .Edit, target: self, action: #selector(Nam1BarBtnKlkFnc(_:)))
self.navigationItem.setRightBarButtonItem(barBtnVar, animated: true)
答案 2 :(得分:0)
尝试用您的viewDidLoad
的方法:
let label = UILabel(text: "Reminder")
self.navigationController?.navigationBar.topItem?.titleView = label