所需屬性
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")
}