关于Storyboard拖拽的ViewController返回上一层时有对象被释放
来源:互联网 发布:生物信息 python 编辑:程序博客网 时间:2024/05/17 21:03
最近有个需求,设置播放器播放音频时,要求离开当前播放页面也是可以播放的,然后整个项目都是采用storyboard拖拽,播放器设置是采用KVO通知的,当我点击返回时,发现播放器控制对象被释放了,然后导致程序崩溃。于是发现了在storyboard中拖拽的ViewController采用push或者modal弹出时,当点击返回离开当前页面时,strong类型修饰的变量被释放,于是采用代码形式初始化播放页面的ViewController.详见如下代码:
@property (nonatomic,strong)CoursePlayViewController *courseVC;
- (void)enterPlayViewController
{if (!self.courseVC) {
self.courseVC = [[CoursePlayViewController alloc] init];
}
[[self getCurrentVC] presentViewController:self.courseVC animated:YES completion:nil];
}
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
[self getCurrentVC] 是获取当前页面的视图控制器的方法。
- 关于Storyboard拖拽的ViewController返回上一层时有对象被释放
- C#:返回上一层
- 返回上一层activity
- 可通过自定义的返回按钮返回上一层Fragment
- ios5 storyboard 代码获取独立的 viewController对象
- ios5 storyboard 代码获取独立的 viewController对象
- HTML返回上一层页面
- 返回上一层常用方法
- 滑动返回上一层视图
- Android返回上一层Activity的一个好方法
- storyboard中游离的viewcontroller
- 关于storyboard 的segue返回方法
- android 点击按钮返回上一层
- Toast、Onclick、匿名类、返回上一层
- php 模拟返回url上一层目录
- iOS NavigationController返回上一层界面
- 如何把当前ViewController的值返回给上一ViewController?
- 如何在自定义的ViewController加载Storyboard里面的ViewController
- 设置table表格监听
- css盒模型
- Channel配置参数
- php+redis 实现用户注册等操作
- oracle数据库开发笔记
- 关于Storyboard拖拽的ViewController返回上一层时有对象被释放
- gson解析注意事项
- sql语句关键字over的作用及用法
- json转树状结构(js)
- Json序列化失败
- java策略模式
- (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
- sql获取表中字段属性的查询语句
- RN实战阶段小结-小项目:书籍列表和展示