如何解决NavigationItem leftNavigationItem 不可点击
我有 MasterViewController,它有 childView 作为 UITabBarController。 UITabBarController 将导航控制器作为选项卡栏项。 MasterViewController 和 TabBarItem ViewController 都是从 BaseViewController 扩展而来的。我已经编写了在 BaseViewController viewDidLoad 方法上添加 leftNavigationItem(UIBarButtonItem) 的代码。但是 leftNavigationItem(UIBarButtonItem) 是不可点击的。我也向 leftnavigationItem(UIBarButtonItem) 添加了选择器。
主视图控制器
class MasterViewController: BaseViewController {
// MARK: Outlets
var masterTabBarController: UITabBarController!
// MARK: View Methods
override func viewDidLoad() {
super.viewDidLoad()
initializeView()
}
// MARK: Overridden Methods
override func initializeView() {
super.initializeView()
addTabBar()
}
// MARK: Private Methods
private func addTabBar() {
guard let appTabBarController = AppRouter.appTabBarController
else {
return
}
masterTabBarController = appTabBarController
addChild(appTabBarController)
appTabBarController.delegate = self
view.addSubview(appTabBarController.view)
}
}
事务视图控制器
class TransactionsViewController: BaseViewController {
// MARK: Outlets
// MARK: View Methods
override func viewDidLoad() {
super.viewDidLoad()
initializeView()
}
// MARK: Overridden Methods
override func initializeView() {
super.initializeView()
}
}
BaseViewController
// MARK: -
enum LeftButtonType: Int {
case site
case back
}
// MARK: -
class BaseViewController: UIViewController {
private var leftButtonType: LeftButtonType = .site
// MARK: View Methods
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.barTintColor = ColorConstants.white
addLeftNavigationItem()
}
// MARK: Action Methods
@objc func leftNavigationButtonClicked() {
print("leftNavigationButtonClicked")
switch leftButtonType {
case .site:
AppRouter.presentSiteSelectionViewController(fromViewController: self)
case .back:
navigationController?.popViewController(animated: true)
}
}
// MARK: Private Methods
private func addLeftNavigationItem() {
if navigationController?.viewControllers.count != 1 {
leftButtonType = .back
}
switch leftButtonType {
case .site:
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image,style: .plain,target: self,action: #selector(leftNavigationButtonClicked))
case .back: break
}
}
}
这是故事板
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。