1

如果我有一个UITabBarController(2 个选项卡)作为根视图控制器,那么在第一个选项卡( )中,我使用根视图控制器FirstTabViewController初始化一个并呈现它。UINavigationControllerAddReminderViewController

然后在里面AddReminderViewController我展示另一个UINavigationController带有一个名为的根视图控制器ChooseOptionViewController并展示它。

现在,当我在里面时,ChooseOptionViewController我想以编程方式回到FirstTabViewController如何尽可能简单地做到这一点?我需要- dismissViewController...在我展示的所有视图控制器上使用还是有更简单的方法?

另外在里面ChooseOptionViewController我怎样才能找到所展示的课程ChooseOptionViewController?我试过做[self.presentingViewController class],但这只是说UINavigationController(不是AddReminderViewController

4

2 回答 2

0

现在,当我在 ChooseOptionViewController 中时,我想以编程方式返回 FirstTabViewController,我怎样才能尽可能简单地做到这一点?

您真的不应该让 ChooseOptionViewController 尝试自己管理所有这些。它应该简单地告诉它的父母它的工作已经完成并让父母解雇它。然后父母可以告诉它的父母它的工作已经完成,等等。这种方法将使您的代码更容易维护,并在您认为有必要时进行更改,而不会破坏ChooseOptionViewController。

例如,假设 AddReminderViewController 希望发生其他事情,例如在出现 ChooseOptionsViewController 之后呈现 ChooseMoreOptionsViewController。如果 AddReminderViewController 负责其部分程序的流程,那很容易。如果 ChooseOptionsViewController 对应用程序的重置有足够的了解,可以将视图控制器一直关闭到 FirstTabViewController,那么每次流程发生变化时,您都必须对其进行修改。这不是长期成功的秘诀,它增加了许多不必要和无益的复杂性。

于 2013-05-27T14:03:40.097 回答
0
generally unless an exception you should use only one navigation controller.
keep pushing view controllers onto it.
in that way you can move pop top to root view controller.


for ex:

1
just add one navigation controller to tab 1

2
setrootviewcontroller of navigation controller to FirstTabViewController

3
from FirstTabViewController you can push AddReminderViewController(using the same navigation controller)
ex:- [self.navigationController PushViewController:....];

4
from AddReminderViewController you can push ChooseOptionViewController(using the same navigation controller)
ex:- [self.navigationController PushViewController:....];



5 finally use [self.navigationController popToRootViewController];
于 2013-05-27T14:36:03.283 回答