Swift 3 | Überprüfen Sie, ob ein View-Controller der Stamm in sich selbst ist.
Sie können innerhalb eines View-Controllers auf window
zugreifen, Sie müssen nur self.view.window
verwenden.
Kontext: Ich brauche die Position einer Ansicht zu aktualisieren und eine Animation auslösen, wenn das Gerät gedreht wird. Ich möchte das nur machen, wenn der View-Controller aktiv ist.
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(deviceDidRotate),
name: .UIApplicationDidChangeStatusBarOrientation,
object: nil
)
}
func deviceDidRotate() {
guard let window = self.view.window else { return }
// check if self is root view controller
if window.rootViewController == self {
print("vc is self")
}
// check if root view controller is instance of MyViewController
if window.rootViewController is MyViewController {
print("vc is MyViewController")
}
}
}
Wenn Sie Ihr Gerät drehen, während MyViewController aktiv ist, werden Sie die obigen Zeilen in die Konsole aus sehen. Wenn MyViewController nicht aktiv ist, werden Sie sie nicht sehen. Wenn Sie neugierig sind, warum ich UIDeviceOrientationDidChange
anstelle von .UIDeviceOrientationDidChange
verwende, sehen Sie sich this answer an.
Möchten Sie feststellen, ob es sich um eine Instanz einer bestimmten Klasse oder um eine bestimmte Instanz handelt? – mc01
Instanz einer Klasse – user83039