使用多个ModalViewController

时间:2010-09-26 17:15:57

标签: iphone modalviewcontroller presentmodalviewcontroller

开始一个新线程...关于同样的问题..我已经尝试了所有我从不同的帖子和论坛得到的...没有为我工作..

我想做的是......

[self presentModalViewController:ViewControllerA animated:YES];//Working fine
//Inside viewControllerA call viewControllerB
[self presentModalViewController:ViewControllerB animated:YES];//Working fine
//Dismiss both the Controllers. and present View

C

我试过了。

  1. 在呈现ViewControllerB //直接查看C
  2. 之前解除viewControllerA
  3. 在viewControllerB中解除viewControllerA //没有结果。 // DismissViewController应该解雇所有堆栈..但不适合我,所以我试过
  4. 在viewControllerB中解除viewContrller //它仍显示viewContrllerA
  5. OMG ......令人困惑......

2 个答案:

答案 0 :(得分:1)

您的代码不清楚(当您可能引用不同的内容时,您正在使用self两次)。我假设你想要做的是(有效地)这个:

[viewController presentModalViewController:viewControllerA animated:YES];
// time passes...
[viewControllerA presentModalViewController:viewControllerB animated:YES];
// time passes
... do something to dismiss both controllers ...

你可能会有这样的运气:

[viewControllerA dismissModalViewController:NO];
[viewController dismissModalViewController:NO];

我不确定“in”或“inside”是什么意思;你在哪个班级“并不重要”。但通常情况下,视图控制器负责其子级。通常,父级将自己设置为子级的委托。当孩子“完成”时,它会向父母发送消息;父母负责解雇孩子。 UIKit的预先打包的视图控制器(UIImagePickerController / MFMailComposeViewController / MFMessageComposeViewController)都遵循这种模式。

答案 1 :(得分:0)

这就是我所做的......不是一个好的解决方案,但现在可以工作.. :)

/// viewDidLoad中 [self presentModalViewController:ViewControllerA animated:YES]; //工作正常

//在ViewController A中 [self dismissModalViewControllerAnimated:NO];

// viewWillAppear中 [self presentModalViewController:ViewControllerB animated:YES]; //工作正常

//在ViewController B中 [self dismissModalViewControllerAnimated:NO];