【问题标题】:Dismiss ModalViewController from subview从子视图中关闭 ModalViewController
【发布时间】:2012-04-11 06:53:30
【问题描述】:

函数调用有问题:

[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];

我对任何帮助或想法都很满意。如果您认为应该提供更多信息,我可以添加更多代码。

【问题讨论】:

  • 你确定自己是你的elcPicker吗?试试 [elcPicker dismissModalViewControllerAnimated:YES];

标签: iphone ios xcode modalviewcontroller subview


【解决方案1】:

可以试试

[app.viewController dismissModalViewControllerAnimated:YES];

希望这会有所帮助。

【讨论】:

  • 是的,我的解决方法与您的建议非常相似。基本上,我只是用同一个控制器来解雇它。谢谢
【解决方案2】:

这可能对你有用:

[self.view dismissModalViewControllerAnimated:YES];

【讨论】:

    【解决方案3】:

    如果您从 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];
    

    本质上,尽管冗长,但如果您需要保持对presentingViewController 的持久引用,请使用您的appDelegate 的控制器来呈现和关闭模态...因为以上所有内容都不起作用我的情况。

    如果您使用 ipadDelegate 进行演示,请确保检查 MainWindow_iPad.xib 中的演示模式。您的“过渡样式”应为“Cover Vertical”,“Presentation”应为“Current Context”,否则您的模态可能会出现在其他视图后面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2011-08-27
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多