如何判断UIViewController的视图是否可见?

  • 回答 (2)
  • 关注 (0)
  • 查看 (94)

我有一个tabbar应用程序。有没有办法知道一个特定的UIViewController目前是否可以从UIViewController中看到?

uncle_lightuncle_light提问于
最爱开车啦互联网的敏感者回答于

这是@ 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
御姐万岁回答于

如果视图当前可见,视图的窗口属性是非零,所以检查视图控制器中的主视图:

PS:调用view方法导致视图加载(如果没有加载),这是不必要的,有可能是不受欢迎的。先检查一下是否已经加载好了。我已经添加了调用isViewLoaded来避免这个问题。

if (viewController.isViewLoaded && viewController.view.window) {

// viewController is visible

}

或者,如果您有一个管理视图控制器的UINavigationController,则可以改为查看其visibleViewController属性。

另外,在iOS 9(或更高版本)的Swift中:

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

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问9 回答
  • 四无君

    0 粉丝0 提问3 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    46 粉丝0 提问2 回答
  • 拉布拉多拉不多

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券