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的检查以启动动画或不启动动画