亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何判斷UIViewController的視圖是否可見

如何判斷UIViewController的視圖是否可見

iOS
郎朗坤 2019-07-22 14:37:33
如何判斷UIViewController的視圖是否可見我有一個選項卡應用程序,有很多視圖。有沒有辦法知道UIViewController當前在UIViewController?(尋找財產)
查看完整描述

3 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

風景窗口屬性如果視圖當前可見,則為非零,因此請檢查視圖控制器中的主視圖:

調用視點方法會導致視圖加載(如果沒有加載),這是不必要的,可能是不可取的。最好先檢查一下,看看是否已經加載了。為了避免這個問題,我向isViewLoed添加了調用。

if (viewController.isViewLoaded && viewController.view.window) {
    // viewController is visible}

或者,如果有UINavigationController管理視圖控制器,則可以檢查其visibleViewController而是財產。

此外,在iOS 9(或更高版本)上的SWIFT中:

if viewController.viewIfLoaded?.window != nil {
    // viewController is visible}


查看完整回答
反對 回復 2019-07-22
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

以下是@progrmr的解決方案UIViewController類別:


// UIViewController+Additions.h


@interface UIViewController (Additions)


- (BOOL)isVisible;


@end



// UIViewController+Additions.m


#import "UIViewController+Additions.h"


@implementation UIViewController (Additions)


- (BOOL)isVisible {

    return [self isViewLoaded] && self.view.window;

}


@end


查看完整回答
反對 回復 2019-07-22
?
森欄

TA貢獻1810條經驗 獲得超5個贊

上述解決方案有幾個問題。例如,如果您使用的是UISplitViewController,主視圖將始終返回true

if(viewController.isViewLoaded && viewController.view.window) {
    //Always true for master view in split view controller}

相反,采取這種簡單的方法,在大多數情況下,即使不是所有情況下,似乎都很有效:

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    //We are now invisible
    self.visible = false;}- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    //We are now visible
    self.visible = true;}


查看完整回答
反對 回復 2019-07-22
  • 3 回答
  • 0 關注
  • 746 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號