首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何判断UIViewController的视图是否可见?

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

提问于 2017-12-14 08:15:29
回答 2关注 0查看 1.1K

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

回答 2

最爱开车啦

发布于 2017-12-14 08:17:10

这是@ progrmr的解决方案作为一个UIViewController类别:

代码语言:txt
AI代码解释
复制
// UIViewController+Additions.h
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
@interface UIViewController (Additions)
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
- (BOOL)isVisible;
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
@end
代码语言:txt
复制
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
// UIViewController+Additions.m
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
#import "UIViewController+Additions.h"
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
@implementation UIViewController (Additions)
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
- (BOOL)isVisible {
代码语言:txt
AI代码解释
复制
    return [self isViewLoaded] && self.view.window;
代码语言:txt
AI代码解释
复制
}
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
@end

御姐万岁

发布于 2017-12-14 08:16:49

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

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

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

// viewController is visible

}

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

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

代码语言:txt
AI代码解释
复制
if viewController.viewIfLoaded?.window != nil {
代码语言:txt
AI代码解释
复制
    // viewController is visible
代码语言:txt
AI代码解释
复制
}
和开发者交流更多问题细节吧,去 写回答
相关文章
iOS获取当前显示UIViewController视图
- (UIViewController *)getCurrentVC { UIViewController *result = nil; UIWindow * window = [[UIApplication sharedApplication] keyWindow]; if (window.windowLevel != UIWindowLevelNormal) { NSArray *windows = [[UIApplication sharedApplicatio
Lee坚武
2020/12/01
9710
js判断元素在某个区域内是否可见(转)
getBoundingClientRect用于获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。getBoundingClientRect是DOM元素到浏览器可视范围的距离(不包含文档卷起的部分)。
山河木马
2019/03/05
7.7K0
UIViewController present UIViewController 的问题
今天写了个demo才发现,当尝试在函数: func application(_ application: UIApplication, didFinishLaunchingWithOptions la
SheltonWan
2019/07/05
1.1K0
如何判断电脑是否激活
想知道电脑是否激活其实并不难知道,用鼠标右键在“此电脑”上选择属性,能够直接看到Windows的激活状态。
java后端指南
2021/05/13
3.8K0
如何判断电脑是否激活
PostgreSQL MVCC可见性判断
TransactionId t_xmin;   /* inserting xact ID */
yzsDBA
2020/03/12
1.7K0
PostgreSQL MVCC可见性判断
JavaScript如何判断是否为数字?
isNaN()函数是js自带的全局函数,isNaN() 函数用于检查其参数是否是非数字值。
全栈程序员站长
2022/09/07
2.6K0
当前页面是否可见
Document.hidden属性来自于浏览器Page Visibility API。
公众号@魔术师卡颂
2020/08/26
2K0
如何判断Javascript对象是否存在
Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下:   if (myObj不存在){     声明myObj;   } 你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分
ruanyf
2018/04/12
2.8K0
如何判断自己是否适合当前公司?
昨天讲的窄化效应,实际是告诉你:“不要在自己有情绪的情况下做决定,也不要在别人有情绪的时候找人沟通决策”
石云升
2022/08/25
7840
如何判断对象是否为垃圾
我们都Java会自动进行内存管理,JVM会进行垃圾回收,哪它是怎么判定哪些是“垃圾”并决定“垃圾”的生死呢?
索码理
2022/12/28
1.2K0
如何判断对象是否为垃圾
如何判断 Activity 上是否有弹窗
今天来看个需求,如何判断 Activity 上面是否有弹窗,当然,简单的方式肯定有,例如在 Dialog show 的时候记录一下,但这种方式不够优雅,我们需要一款更通用的判断方式。
codelang
2022/11/30
3.4K0
如何判断 Activity 上是否有弹窗
python 如何判断字典是否为空?
在python里,{},[],(),等都等价于False! if dict: print 'not Empty'
py3study
2020/01/09
21.3K0
Redis是如何判断数据是否过期的呢?
Redis 通过一个叫做过期字典(可以看作是hash表)来保存数据过期的时间。 过期字典的键指向Redis数据库中的某个key(键),过期字典的值是一个long long类型的整数,这个整数保存了key所指向的数据库键的过期时间(毫秒精度的UNIX时间戳)。
名字是乱打的
2022/01/12
2.3K0
Redis是如何判断数据是否过期的呢?
腾讯云如何判断CDN是否生效
方式一:通过控制台判断 1. 登录CDN控制台,进入 域名管理 列表页面。 2. 如果域名的CNAME解析已有正确解析提示,表示当前CDN域名加速已生效。如果有两条CNAME解析的情况下,其中一条生效即可。
西里国际站
2023/04/19
2.3K0
腾讯云如何判断CDN是否生效
java如何判断对象为空_java对象如何判断是否为空
在实际书写代码的时候,经常会因为对象为空,而抛出空指针异常java.lang.NullPointerException。
全栈程序员站长
2022/06/25
13.5K0
java如何判断对象为空_java对象如何判断是否为空
SQL判断是否
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要select count(*)呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count. 目前多数人的写法 多次 review 代码时,发现如现现象: 业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下 SQL写法: SELECT count(*) FROM table WHERE a = 1 AND b = 2
用户9131103
2023/07/17
2000
iOS 判断UIViewController是push/pop或模态化进入/退出
在平时的开发中会遇到下面两种场景: 有些特殊页面需要判断是通过push/pop 或 模态化的方式进入/退出; 页面出现/消失的时机; UIViewController出现 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) if isBeingPresented || isMovingToParent { if isBe
用户8893176
2022/01/09
1.9K0
如何判断目标站点是否为Django开发
老文一篇,几个月以前发在【代码审计】小密圈里的文章,当时是写一个系列(Django安全漫谈),抽出其中的一部分,分享一下。 在黑盒测试的情况下,如何判断一个站是否是Django开发的?以下这些方法,很多都能在我的博客( https://www.leavesongs.com )得到印证。 利用Debug模式异常页面判断 DEBUG模式开启时,访问不存在的页面或出错的页面会有特殊的异常抛出。像这样的页面,就可以确定是Django 访问一个包含表单的页面,表单中会有一个隐藏的input,用来做CSRF检测
小小科
2018/05/03
1.4K0
如何判断目标站点是否为Django开发
如何判断list、map集合是否为空[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 前言 最近在面试的时候,经常会遇到一个问题:请问如何判断一个list/map集合为空? 这个问题我们可以反向思考,一个集合不为空,假设有一个对象 ma
全栈程序员站长
2022/07/04
3.5K0
点击加载更多

相似问题

如何判断mysql是否purge了?

067

怎么判断Authorization是否正确?

2398

人脸核身视频验证如何判断是否成功?

1476

COS java sdk 是否提供判断bucket是否存在的方法?

1552

Ansible: 判断嵌套字典是否定义?

0244
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
web前端擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文