PUSH BEZ ANIMACJI: Swift Oto, co zadziałało dla mnie.
import ObjectiveC
private var AssociatedObjectHandle: UInt8 = 0
extension UIViewController {
var isAnimationRequired:Bool {
get {
return (objc_getAssociatedObject(self, &AssociatedObjectHandle) as? Bool) ?? true
}
set {
objc_setAssociatedObject(self, &AssociatedObjectHandle, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
-------------------- SilencePushSegue --------------------
class SilencePushSegue: UIStoryboardSegue {
override func perform() {
if self.source.isAnimationRequired == false {
self.source.navigationController?.pushViewController(self.destination, animated: false)
}else{
self.source.navigationController?.pushViewController(self.destination, animated: true)
}
}
}
Użycie : Ustaw klasę płynną z serii ujęć, jak pokazano na rysunku. ustaw isAnimationRequired z kontrolera widoku na false z miejsca, w którym chcesz wywołać performSegue, gdy chcesz wypchnąć płynnie bez animacji i ustawić z powrotem na true po wywołaniu self.performSegue. Powodzenia....
DispatchQueue.main.async {
self.isAnimationRequired = false
self.performSegue(withIdentifier: "showAllOrders", sender: self);
self.isAnimationRequired = true
}