【发布时间】:2015-08-20 17:45:31
【问题描述】:
我有一个登录视图控制器,我在其中创建 navigationController,并使用自定义视图(UIButton)创建 leftBarButtonItem 和 rightBarButtonItems。现在在这里我只设置了navigationController 的条形按钮项,以便所有视图控制器都可以使用以下方式访问该导航控制器上的所有视图控制器:
navigationController.navigationItem.rightBarButtonItems = [someBarButton, someOtherBarButton]
navigationController.navigationItem.leftBarButtonItem = backBarButton
现在对于我设置的每个视图控制器self.navigationItem.leftBarButtonItem = self.navigationController.navigationItem.leftBatButtonItem。我可以查看按钮。现在因为按下这些的方法应该在视图控制器中实现,所以我在视图控制器的viewDidLoad() 中尝试了这个:
self.navigationItem.leftBarButtonItem!.target = self
self.navigationItem.leftBarButtonItem!.action = Selector("backButtonPressed")
但我在方法中没有收到任何回调:
func backButtonPressed() {
println("Back pressed")
popViewController()
}
编辑 #1: 我在登录视图控制器中设置 leftBarButtonItem 的代码:
let navigationController = UINavigationController()
let backButton = UIButton(frame: CGRectMake(0, 0, kNavBarIconHeight, kNavBarIconHeight))
backButton.setImage(UIImage(named: "backButton"), forState: UIControlState.Normal)
let backBarButton = UIBarButtonItem(customView: backButton)
navigationController.navigationItem.leftBarButtonItem = backBarButton
我使用的是 navigationController 的 barButtonItem 而不是视图控制器堆栈中的前一个控制器
【问题讨论】:
-
你的 backButtonPressed() 选择器方法的标题是什么样的?
-
@timgcarlson 更新了问题
-
你确定没有调用 backbuttonPressed() 方法吗?您能否显示将自定义按钮设置为条形按钮项的代码。
-
要进一步添加@JennyJose 建议的内容,请尝试在 backButtonPressed 中放置一个断点或使用 print() 打印到控制台。
-
你在哪里设置
target和action属性?
标签: ios swift uinavigationcontroller uibarbuttonitem