前提非常简单:我想在使用UisplitViewController的iPad应用中显示模态视图。

视图层次结构是直接的:

                                              /- TableViewController1
                     /- root:TabBarController -- TableViewController2
SplitViewController -
                     \- detail:CustomViewController

当我单击tableViewController1中的一个表单元格时,我打开模态视图:

- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)ip {
  UIViewController *vc = [[MyModalClass alloc] init];
  UINavigationController *nc = [[UINavigationController alloc]
                                initWithRootViewController:vc];
  nc.modalPresentationStyle = UIModalPresentationFormSheet;
  nc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
  [self presentModalViewController:nc animated:true];
  [nc release];
  [vc release];
}

这很好:出现视图。当我试图以景观以外的任何方向解雇它时,问题就开始了。

在ModalViewController中,导航栏中的uitabbarbutton触发了以下方法:

- (void) closeButtonInNavBarWasClicked:(id)sender {
  [self dismissModalViewControllerAnimated:true];
}

这就是问题开始的地方。

当调用此代码时,模态视图消失,但是:TabbarController(拆分视图的根视图)突然旋转并调整大小。内容突然侧面,部分涵盖了细节视图。详细信息视图的规模不小,它只是由根视图部分覆盖。

唯一没有出现此问题的情况是,当我在应用程序模式下,当我点击tableViewController1单元格时。尽管根视图在弹出窗口中(可能是一个足够的错误来源),但一切都很好。

我已经尝试过的一些事情,没有成功:

  • 转储标签栏,只需显示tableviewController1作为拆分视图的根控制器
  • 创建一个委托协议,以便parent tableviewController1删除模态视图,而不是mymodalclass视图本身。
  • 在tableViewController1.splitviewController上呈现/删除模态视图实际上使情况变得更糟:视图甚至没有出现。
  • 牺牲几只山羊也无济于事。

我将非常感谢有关此问题的任何意见。

有帮助吗?

解决方案

我对自己的问题有一种回答:我使用仪器系统地消除了应用程序中的所有内存泄漏。一旦我这样做,问题就消失了。

其他提示

我遇到了与您相同的问题,我通过在程序上暂时强制旋转我的呈现controller(一旦返回到它)来解决它,并以其ViewDidappear方法进行一些任意旋转。当然没有动画。然后将其旋转回想要的方向(我在旋转之前保存了)。

因此,如果VC1模仿显示VC2,并且用户旋转VC2,则通过调用:UIinterFaceorientation Currentation currentIrientation = self.inter.inter.inter.inter.interfaceorientation; //存储VC2的当前方向(模态视图)[VC1 WillRotateToInterfaceorientation:CurrentIrientation持续时间:0];

然后,我解散了VC2,在VC1的ViewWillAppear中,我这样做:

- (void)viewdidappear :( bool)动画{

[super viewDidAppear:animated];

/* Store wanted orientation */
UIInterfaceOrientation currentOrientation = self.interfaceOrientation; 

/* rotate to some arbitrary orientation, this solves the bug. */
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortraitUpsideDown animated:NO]; 

[[UIDevice currentDevice] setOrientation:currentOrientation animated:NO]; //restore wanted orientation.

}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top