问题描述
我有 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 (将#修改为@)