判斷某個ViewController是不是正在顯示的ViewController

所需屬性

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屬性導致加載,導致viewwindow屬性賦值,我們仍然可以認為ViewController不是正在顯示的ViewController

if self.isViewLoaded && view.window != nil {
    print("是正在顯示的ViewController")
} else {
    print("不是正在顯示的ViewController")
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容