Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS/Swift:如何为backButton实现长按操作?_Ios_Swift_Button_Uigesturerecognizer_Back - Fatal编程技术网

iOS/Swift:如何为backButton实现长按操作?

iOS/Swift:如何为backButton实现长按操作?,ios,swift,button,uigesturerecognizer,back,Ios,Swift,Button,Uigesturerecognizer,Back,我正在尝试为我的应用程序中的每个ViewController实现一个自定义后退按钮。我希望它有两个动作。如果点击该按钮,则该按钮应正常运行并进入导航堆栈。如果按钮被按住的时间过长,则应转到预定义的ViewController 如何在swift中仅对backbutton实现此功能?您可以隐藏默认的导航后退按钮,并通过以下方式添加自定义按钮: import UIKit class SViewController: UIViewController { override func view

我正在尝试为我的应用程序中的每个ViewController实现一个自定义后退按钮。我希望它有两个动作。如果点击该按钮,则该按钮应正常运行并进入导航堆栈。如果按钮被按住的时间过长,则应转到预定义的ViewController


如何在swift中仅对backbutton实现此功能?

您可以隐藏默认的导航后退按钮,并通过以下方式添加自定义按钮:

import UIKit

class SViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //hide your default back button
        navigationController!.setNavigationBarHidden(false, animated:true)

        //create a new button 
        var myBackButton:UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
        myBackButton.addTarget(self, action: "popToRoot:", forControlEvents: UIControlEvents.TouchUpInside)
        myBackButton.setTitle("Back", forState: UIControlState.Normal)
        myBackButton.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
        myBackButton.sizeToFit()

        //create a LongPressGestureRecognizer
        var longPressGesture = UILongPressGestureRecognizer(target: self, action: "longPressAction:")

        //add LongPressGestureRecognizer into button
        myBackButton.addGestureRecognizer(longPressGesture)

        var myCustomBackButtonItem:UIBarButtonItem = UIBarButtonItem(customView: myBackButton)
        self.navigationItem.leftBarButtonItem  = myCustomBackButtonItem

    }

    //this method will call when you tap on button.
    func popToRoot(sender:UIBarButtonItem){
        self.navigationController!.popToRootViewControllerAnimated(true)
    }

    //this method will call when you long press on button
    func longPressAction(gestureRecognizer:UIGestureRecognizer) {

        //initiate your specific viewController here.
        println("Long press detected")
    }

}

可能重复显示您尝试过的代码我应该在longPressAction中调用pushViewController吗?.PoptorootViewController()转到我的第一个视图,而不是先前的视图..请随意提问其他更详细的问题..:)如果需要,请查看我的新问题:)