所需属性
isViewLoaded
: A Boolean value indicating whether the view controller’s view is loaded into memory.(isViewLoaded
是一个布尔值,可以知道VC是否被加载到内存,isViewLoaded
是UIViewController的属性)
window
:The receiver’s window object, or nil if it has none.(window
是UIView的属性,当view显示时,window属性基本有值,)
思路
如果一个ViewController
是正在显示的ViewController
,其View
的属性window
有值,反之为nil
,所以我们可以通过
if view.window != nil {
print("是正在显示的ViewController")
} else {
print("不是正在显示的ViewController")
}
补充
但是因为访问ViewController的view
属性可能会导致ViewController
的加载(实测没有!),从而导致window
赋值,为了保险起见,通过isViewLoaded
属性我们可以先判断控制器有没有加载,如果没有,即使访问view
属性导致加载,导致view
的window
属性赋值,我们仍然可以认为ViewController
不是正在显示的ViewController
if self.isViewLoaded && view.window != nil {
print("是正在显示的ViewController")
} else {
print("不是正在显示的ViewController")
}