将视图控制器添加到 uiwindow addsubview

Posted

技术标签:

【中文标题】将视图控制器添加到 uiwindow addsubview【英文标题】:add viewcontroller to uiwindow addsubview 【发布时间】:2015-08-13 07:10:39 【问题描述】:

//我正在使用。

CalVC *cal = [[CalVC alloc]initWithNibName:@"CalVC" bundle:nil];
cal.view.frame = [UIScreen mainScreen].applicationFrame;

[[[[UIApplication sharedApplication] delegate] window] addSubview:cal.view];

它正在工作,CalVC 出现了,我在 CalVc 中显示了一个计算器,但是当它通过这种方法出现时,计算器的按钮不起作用并显示错误 //exc_bad_access code=exc_i386_gpflt ios

【问题讨论】:

【参考方案1】:

我认为 CalVC 已发布。所以你必须定义一个属性并将其保存在 .h 文件中。

@property (nonatomic, strong) CalVC * _cal;

在 .m 文件中:

_cal = [[CalVC alloc]initWithNibName:@"CalVC" bundle:nil];

【讨论】:

Thanx anhtu it didn't crash now thanx 你知道如何从另一个视图中删除这个 uiwindow [self.view removeFromSuperview]; [self removeFromParentViewController];我用它来移动,但它仍然出现在屏幕上,但是当我点击任何按钮时它崩溃了。 @vivekpadaya 不确定“此 uiwindow”的含义。但是对于删除 _cal(CalVC): [_cal.view removeFromSuperView];【参考方案2】:

只需将CalVC *cal 的全局引用创建为属性。由于本地参考,您的视图正在解除分配。

@property (nonatomic, retain) CalVC * _cal;

【讨论】:

以上是关于将视图控制器添加到 uiwindow addsubview的主要内容,如果未能解决你的问题,请参考以下文章

UIWindow 的 rootViewController 属性

如何在屏幕的某个部分添加另一个 UIWindow

86UIWindow简单介绍

将 UIViewController 的视图调整为父 UIWindow 的边界

UIWindow addSubview 处理事件

将 UIView 添加到 UIWindow 的子视图时未检测到画外音