无法将 barbuttonitem 添加到导航控制器
Unable to add barbuttonitem to navigation controller
我想在我的 project.But 中集成导航控制器和标签栏控制器。我无法将右栏按钮添加到导航控制器。
我附上了故事板的截图
我所做的是将导航控制器添加到登录屏幕,这次我可以通过添加代码以及将 barbuttonitem 拖动到导航控制器来添加 barbuttonitem。
let addBtn = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
self.navigationItem.rightBarButtonItem = addBtn
我面临的问题是在添加选项卡栏控制器后,我无法通过代码以及拖动到导航控制器来添加右栏按钮。请帮助我。
当 ViewController 嵌入 NavigationController 时,您使用
self.navigationItem.rightBarButtonItem = addBtn
在您的项目中,Detail Screen 没有直接嵌入到 NavigationController 中。 Detail Screen嵌入TabBarController,TabBarController嵌入NavigationController。所以你应该使用
self.tabBarController?.navigationItem.rightBarButtonItem = addBtn
但是这个 addBtn 将在嵌入到 TabBarController 中的所有视图控制器中可见。
如果只想为一个 viewcontroller 添加 rightBarButton,则将详细信息屏幕嵌入到新的 NavigationController 中。然后你可以使用
添加 rightBarButton
self.navigationItem.rightBarButtonItem = addBtn
您应该确定 parent
returns UINavigationController
的顶级子控制器。就我而言
parent?.parent?.navigationItem.right...
成功了。
如果您重复使用要向 navigationItem
添加项目的控制器(嵌入式或非嵌入式),以下示例将起作用。但是,可能需要进行一些逻辑更改。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard parent is UINavigationController else {
parent?.parent?.navigationItem.rightBarButtonItem = UIBarButtonItem()
return
}
navigationItem.rightBarButtonItem = UIBarButtonItem()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
guard parent is UINavigationController else {
parent?.parent?.navigationItem.rightBarButtonItem = nil
return
}
navigationItem.rightBarButtonItem = nil
}
我想在我的 project.But 中集成导航控制器和标签栏控制器。我无法将右栏按钮添加到导航控制器。
我附上了故事板的截图
我所做的是将导航控制器添加到登录屏幕,这次我可以通过添加代码以及将 barbuttonitem 拖动到导航控制器来添加 barbuttonitem。
let addBtn = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
self.navigationItem.rightBarButtonItem = addBtn
我面临的问题是在添加选项卡栏控制器后,我无法通过代码以及拖动到导航控制器来添加右栏按钮。请帮助我。
当 ViewController 嵌入 NavigationController 时,您使用
self.navigationItem.rightBarButtonItem = addBtn
在您的项目中,Detail Screen 没有直接嵌入到 NavigationController 中。 Detail Screen嵌入TabBarController,TabBarController嵌入NavigationController。所以你应该使用
self.tabBarController?.navigationItem.rightBarButtonItem = addBtn
但是这个 addBtn 将在嵌入到 TabBarController 中的所有视图控制器中可见。
如果只想为一个 viewcontroller 添加 rightBarButton,则将详细信息屏幕嵌入到新的 NavigationController 中。然后你可以使用
添加 rightBarButtonself.navigationItem.rightBarButtonItem = addBtn
您应该确定 parent
returns UINavigationController
的顶级子控制器。就我而言
parent?.parent?.navigationItem.right...
成功了。
如果您重复使用要向 navigationItem
添加项目的控制器(嵌入式或非嵌入式),以下示例将起作用。但是,可能需要进行一些逻辑更改。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard parent is UINavigationController else {
parent?.parent?.navigationItem.rightBarButtonItem = UIBarButtonItem()
return
}
navigationItem.rightBarButtonItem = UIBarButtonItem()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
guard parent is UINavigationController else {
parent?.parent?.navigationItem.rightBarButtonItem = nil
return
}
navigationItem.rightBarButtonItem = nil
}