Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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 ViewController的主要功能,如VIEWDID_Ios_Swift_Function_View - Fatal编程技术网

Ios 跳过swift ViewController的主要功能,如VIEWDID

Ios 跳过swift ViewController的主要功能,如VIEWDID,ios,swift,function,view,Ios,Swift,Function,View,在我的代码中,当视图消失时,会发生特定的操作。我是通过viewdiddemouse()函数来实现的。 我有一个特定的按钮,当按下时,它会转到另一个视图。我想知道我能用什么方法只知道由某个特定按钮导致的函数跳过了viewdidegase() 我完全知道我可以在viewdidegale()中添加一种“if”语句,但我想知道是否有更有效的方法 ViewDidEnglishe()是由环境调用的UIViewController的生命周期回调方法-据我所知,无法禁用其调用。我不认为应该——正如我所提到的,它

在我的代码中,当视图消失时,会发生特定的操作。我是通过
viewdiddemouse()
函数来实现的。 我有一个特定的按钮,当按下时,它会转到另一个视图。我想知道我能用什么方法只知道由某个特定按钮导致的函数跳过了
viewdidegase()

我完全知道我可以在
viewdidegale()
中添加一种“if”语句,但我想知道是否有更有效的方法

ViewDidEnglishe()
是由环境调用的
UIViewController
的生命周期回调方法-据我所知,无法禁用其调用。我不认为应该——正如我所提到的,它是
UIViewController
生命周期的一部分,不调用它会破坏契约——看到它

因此,您必须(并且应该)通过使用
if
语句来实现您想要的

这样做:

fileprivate var skipDisappearingAnimation = false

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)

    prepareInterfaceForDisappearing()
}

fileprivate func prepareInterfaceForDisappearing() {
    guard !skipDisappearingAnimation else {
        // reset each time
        skipDisappearingAnimation = false
        return
    }

    // do the stuff you normally need
}

@objc fileprivate func buttonPressed(_ sender: UIButton) {
    skipDisappearingAnimation = true
    // navigate forward
}
ViewDidEnglishe()
是环境调用的
UIViewController
的生命周期回调方法-据我所知,无法禁用其调用。我不认为应该——正如我所提到的,它是
UIViewController
生命周期的一部分,不调用它会破坏契约——看到它

因此,您必须(并且应该)通过使用
if
语句来实现您想要的

这样做:

fileprivate var skipDisappearingAnimation = false

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)

    prepareInterfaceForDisappearing()
}

fileprivate func prepareInterfaceForDisappearing() {
    guard !skipDisappearingAnimation else {
        // reset each time
        skipDisappearingAnimation = false
        return
    }

    // do the stuff you normally need
}

@objc fileprivate func buttonPressed(_ sender: UIButton) {
    skipDisappearingAnimation = true
    // navigate forward
}

这是不可能做到的;您必须使用
if
手动处理该案例,例如:

    var shouldSkip: Bool = false

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        if !shouldSkip {
            // your code goes here
        }
        shouldSkip = false // don't forget to set should skip to false again
    } 

    @IBAction func buttonDidTap(_ sender: Any) {
        shouldSkip = true // this will avoid run your code
        // your code here
    }

这是不可能做到的;您必须使用
if
手动处理该案例,例如:

    var shouldSkip: Bool = false

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        if !shouldSkip {
            // your code goes here
        }
        shouldSkip = false // don't forget to set should skip to false again
    } 

    @IBAction func buttonDidTap(_ sender: Any) {
        shouldSkip = true // this will avoid run your code
        // your code here
    }

你不能禁用它。。。它与控制器的生命周期有关。这听起来像是一个XY问题。你到底想做什么?我有一个动画,它将我的所有子视图移到一边,这样当视图再次出现时,它们可以通过动画进入。由于我所说的按钮是一个来自底部的“二级视图”,我希望动画不会出现。只需保留一个bool,并在动画完成时更新其值,并保持对bool的检查以启动动画或不启动动画。您无法禁用它。。。它与控制器的生命周期有关。这听起来像是一个XY问题。你到底想做什么?我有一个动画,它将我的所有子视图移到一边,这样当视图再次出现时,它们可以通过动画进入。由于我所说的按钮是一个从底部来的“二次视图”,我希望动画不会出现。只需保留一个bool,并在动画完成时更新其值,并保持对bool的检查以启动动画或不启动动画