如何在swift中设置backBarButtonItem动作?

时间:2014-10-17 09:26:16

标签: xcode swift uinavigationbar backbarbuttonitem

如何设置动作backBarButtonItem并仍然显示左箭头?

我使用了此代码但箭头未显示

var barBack = UIBarButtonItem(title: "Reset", style: UIBarButtonItemStyle.Plain, target: self, action: "reset:")
self.navigationItem.leftBarButtonItem = barBack

但是当我使用此代码时,操作无法正常工作

self.navigationController?.navigationBar.topItem?.backBarButtonItem = barBack

由于

3 个答案:

答案 0 :(得分:2)

作为设置操作的替代方法,您可以保留backBarButtonItem并使用isMovingFromParentViewController代替处理返回导航堆栈的逻辑。

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    if isMovingFromParentViewController() {
        .. do something here
    }
}

答案 1 :(得分:0)

试试这个

var barBack = UIBarButtonItem(title: "Reset", style: UIBarButtonItemStyle.Plain, target: self, action: "reset:")
self.navigationItem.leftBarButtonItem = barBack

让我知道它是否有效。

答案 2 :(得分:0)

试试这个: 在ViewDidLoad

    let backButton = UIBarButtonItem(title: "< Home", style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")
    navigationItem.leftBarButtonItem = backButton
    navigationItem.backBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "the_font_you_want_to_use", size: size_of_the_font_this_should_be_integer)!], forState: UIControlState.Normal)

并实现以下方法:

    func goBack() {
    self.navigationController?.popToRootViewControllerAnimated(boolean)
}

只需将the_font_you_want_to_use,size_of_the_font_this_should_be_integer和布尔值替换为您想要的值,一切都将正常工作。

***编辑

如果您不想回到Root View Controller,而不是

self.navigationController?.popToRootViewControllerAnimated(boolean)
你可以说:

self.navigationController?.popViewControllerAnimated(boolean)

甚至弹出到其他ViewController,指定popToViewController的第一个参数为YourViewController类的对象,第二个为动画的布尔值。