美文网首页iOS开发iOS Developer
在window上添加子视图不显示

在window上添加子视图不显示

作者: 上吊的豆腐 | 来源:发表于2016-09-01 11:38 被阅读240次

最近做项目遇到了这样一个问题:在一个页面中点击模态弹出视图再dismiss回原来的页面并在window上添加子视图,但是无论怎么弄都没法,后来发现原来是获取window出现了问题:
我们习惯获取window的方法有以下几种:

1. UIWindow *window = [[UIApplication sharedApplication].windows lastObject];

2.UIWindow *window = [UIApplication sharedApplication].keyWindow

3.UIWindow *window = [[[UIApplication sharedApplication] delegate] window]  
(或UIWindow *window = [[UIApplication sharedApplication].delegate window])

但事实证明只有第三种方法是最有安全保障,无危害的.
因为:
(1)在rootViewController中的viewDidLoad:方法中调用[[UIApplication sharedApplication].keyWindow addSubview:]有可能无效,因为这时候[UIApplication sharedApplication].keyWindow获取额window为nil,因为这个时候appdelegate中的keywindow还没有创建成功

(2)同上,我遇到的问题也是如此,而我用的方法是UIWindow *window = [[UIApplication sharedApplication].windows lastObject];这个时候window还没创建成功,你根本无法获取

这个问题其实很常见,不知道各位有没有注意到!
如有问题,欢迎指正!

相关文章

  • 在window上添加子视图不显示

    最近做项目遇到了这样一个问题:在一个页面中点击模态弹出视图再dismiss回原来的页面并在window上添加子视图...

  • 适配iOS11的坑

    1、iOS11视图无法显示----添加在window上的视图无法显示我们一般都会用下面这种方式来让一个视图显示在最...

  • 无标题文章

    UIWindow 最上层添加视图 如果新建的视图已经被addSubView,window再添加就会添加不上??!!待思考

  • UILabel上添加子视图,视图无法显示

    UILabel上添加子视图,视图无法显示 UILabel *label = [[UILabel alloc] in...

  • UIPanGestureRecognizer与UITableVi

    问题描述:window的根控制器上添加了UITableView,还有侧边栏视图,起初为了实现拖动完成侧边栏显示/不...

  • Activity 视图显示

    一、创建给Window添加布局视图 创建显示Activity视图,需要调用setContentView() 二、W...

  • Swift中Tabbar的简单练习

    首先创建根tabbarController作为window的根视图,在tabbarController中进行添加子...

  • 在UINavigationController下的-(void)

    viewWillAppear 只在该视图控制器 视图直接添加到 window 上的时候才会调用。 比如 navig...

  • Window、Activity、DecorView

    Activity:控制声明周期和处理事件,统筹视图的添加与显示 Window:是视图承载器,内部持有一个Decor...

  • UIToolbar 子视图无响应问题

    在UIToolbar上addSubView添加子视图时,子视图无法响应,经测试在iOS 11上复现查看视图层级关系...

网友评论

    本文标题:在window上添加子视图不显示

    本文链接:https://www.haomeiwen.com/subject/asbcettx.html