Iphone 如何重新创建UIViewController堆栈?

Iphone 如何重新创建UIViewController堆栈?,iphone,uiviewcontroller,viewdidload,loadview,Iphone,Uiviewcontroller,Viewdidload,Loadview,我正在为我当前的iPhone应用程序编写一个“加载”功能 实际上,我想做的是让用户回到他/她离开的地方。为此,我想重新创建以前出现的所有UIViewController 我的问题是,如果我只调用[[self-navigationController]pushViewController:newController animated:YES];,UIViewController将不会出现 同样的代码在作为事件处理程序调用时可以正常工作,比如在触摸按钮之后。但是,如果我在没有偶数for ex.in

我正在为我当前的iPhone应用程序编写一个“加载”功能

实际上,我想做的是让用户回到他/她离开的地方。为此,我想重新创建以前出现的所有UIViewController

我的问题是,如果我只调用[[self-navigationController]pushViewController:newController animated:YES];,UIViewController将不会出现

同样的代码在作为事件处理程序调用时可以正常工作,比如在触摸按钮之后。但是,如果我在没有偶数for ex.in viewDidLoad的情况下执行相同的操作,则不会调用新视图控制器的loadView方法

我的实际代码带有一些伪元素:

- (void)viewDidLoad {
    [super viewDidLoad];
    if (loading)
        [self onSomeEvent];
}

- (void)onSomeEvent {
    UIViewController *newController = //init....;
    [[self navigationController] pushViewController:newController animated:YES];
    [newController release];
}

我想viewDidLoad不是执行此类调用的合适位置,但那又是什么呢?

我不确定将加载功能分散到所有控制器上是否是实现此功能的最佳方式

我宁愿把它放在应用程序的init中,也就是applicationdFinishLauching部分。然后您就有了一个集中的地方,在那里您可以恢复以前的状态,从而更容易处理IMHO

假设您想要实现一些更高级的恢复功能,如:

显示带有活动指示器的初始UIView,以指示用户正在恢复以前的状态 在导航控制器中还原控制器堆栈 清除飞溅物 将所有这些代码放在ApplicationIDFinishLauching中更容易:它们都在一个点上进行管理


此外,在将旧状态恢复到导航控制器时,可以避免使用转换,并在按下控制器时使用动画:否而不是是。从您的角度来看,这将更容易处理,如果您删除实现转换所需的时间,则还原时间可能会缩短。

您是否尝试在用户再次运行应用程序时还原其状态?看看这个答案是否有用: