mob*_*bob 2 parentviewcontroller ipad presentmodalviewcontroller
我有几个模态视图一直工作"很好",现在停止返回到父视图控制器,"代码没有改变." - 经典问题描述.
我调试了模态视图解除,父视图控制器是nil,这解释了问题,但不是原因.我确实将我的SDK从4.1.2升级到4.2,所以我可以开始使用iOS 5.我怀疑新的内存管理ARC和我的自动释放风格与保留/释放.
以下是我的rootview控制器到AboutViewController的代码:
- (IBAction)doInfo:(id)sender {
NSLog(@"%s", __FUNCTION__);
AboutViewController *aboutViewController = [[[AboutViewController alloc] initWithNibName:@"AboutViewController" bundle:[NSBundle mainBundle]] autorelease];
if (aboutViewController) {
aboutViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
aboutViewController.hidesBottomBarWhenPushed = YES;
self.navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
self.navigationController.navigationBarHidden = YES;
[self presentModalViewController:aboutViewController animated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
以下是在按下"完成"按钮后将AboutViewController中的消除回到其父节点.
- (IBAction)doDone:(id)sender {
NSLog(@"%s", __FUNCTION__);
[[self parentViewController] dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
好的......我修改如下修改.现在的问题是为什么以前这项工作?
- (IBAction)doDone:(id)sender {
NSLog(@"%s", __FUNCTION__);
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
引用[1]关于财产parentViewController
:
在iOS 5.0之前,如果视图没有父视图控制器并且以模态方式呈现,则将返回呈现它的视图控制器.这已不再是这种情况.您可以使用presentViewController属性获取呈现视图控制器.
所以这解决了之前为什么这样做而不再有效的问题.如果为iOS 5构建,我将使用该presentingViewController
属性,因为文档建议让父视图控制器(或在本例中呈现)忽略模态视图.但是,如果为iOS 4和5构建,我会让你的代码到位,因为它无论如何都会将调用转发给相应的视图控制器.
如果在任何情况下应用程序在重新编译之前在iOS 5上完美运行,我会假设Apple放置了一些运行时技巧,模仿iOS5之前编译的应用程序的旧行为.
归档时间: |
|
查看次数: |
1340 次 |
最近记录: |