我的函数调用有问题:
[self dismissModalViewControllerAnimated:YES];
在MainViewController中,我可以通过单击取消按钮启动图像选择器并像往常一样关闭。
(IBAction) LaunchInMain:(id)sender{
MainAppDelegate *app = (MainAppDelegate *)[[UIApplication sharedApplication] delegate];
//elcPicker is a customized image picker
[app.viewController presentModalViewController:elcPicker animated:YES];
[elcPicker release];
[albumController release];
- (void)elcImagePickerControllerDidCancel:(ELCImagePickerController *)picker {
[self dismissModalViewControllerAnimated:YES];
}
现在,我首先添加一个子视图,然后使用相同的启动方法从子视图启动图像选择器,而不是启动它直接在Main中。
问题:
无法关闭图像选取器,并且无法再次显示子视图。因此无论我点击什么,屏幕都会保留在图像选择器上。
我一直在尝试其他一些电话,但没有取得任何成功:
[self dismissModalViewControllerAnimated:YES];
我对任何帮助或想法都很满意。如果您认为应该提供更多信息,我可以添加更多代码。
答案 0 :(得分:2)
可以尝试
[app.viewController dismissModalViewControllerAnimated:YES];
希望这有帮助。
答案 1 :(得分:2)
这可能对您有用:
[self.view dismissModalViewControllerAnimated:YES];
答案 2 :(得分:0)
如果您要从UISplitViewController呈现模态视图,则此方法有效。它也可以用很多其他方式来应用......
首先,在您的.h文件中为appDelegate(AppDelegate_iPad *appDelegate
)创建一个实例,然后将其放入viewDidLoad或类似的方法中:
ipadDelegate = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
现在,提出第一个模态视图:
YOURVC *vc = [[YOURVC alloc] initWithNibName:@"YOURVC" bundle:nil];
[ipadDelegate.splitViewController presentModalViewController:vc animated:YES];
[vc release];
假设你有一个子视图,比如UITableView,并且想要从didSelectRowAtIndexPath中删除模态。要使用子视图关闭模态,只需在子视图的.h中创建另一个ipadDelegate实例(如果需要),再次引用[[UIApplication sharedApplication]委托],并解除:
[ipadAppDelegate.splitViewController dismissModalViewControllerAnimated:YES];
基本上,如果你需要保持对presentViewController的持久引用,可以使用你的appDelegate的控制器来呈现和解除模态...因为上面的所有内容都不起作用我的情况。
如果您正在使用ipadDelegate,请务必检查MainWindow_iPad.xib中的演示模式。您的“过渡风格”应为“覆盖垂直”,“演示”应为“当前上下文”,或者您的模式可能出现在其他视图后面。