0

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

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

我的问题是UIViewController如果我简单地调用 s 就不会出现[[self navigationController] pushViewController:newController animated:YES];

当作为事件处理程序调用时,相同的代码可以正常工作,例如在触摸按钮之后。但是,如果我在没有偶数(例如 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不是做这样一个电话的正确地方,但那是什么?

4

1 回答 1

0

我不确定将您的“负载”功能全部传播到您的控制器是实现它的最佳方式。

我宁愿把它放在你的应用程序的 initapplicationDidFinishLauching部分。然后你有一个集中的地方,你可以恢复以前的状态(更容易处理恕我直言)。

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

  • 显示带有活动指示器的启动 UIView 以指示用户您正在恢复以前的状态
  • 恢复导航控制器中的控制器堆栈
  • 去除飞溅

将所有这些代码放在 applicationDidFinishLauching 中会更容易:它们都在一个点进行管理。

此外,在将旧状态恢复到导航控制器时,您可以避免使用转换并使用animated:NO而不是YES在推送控制器时使用。从您的角度来看,这将更容易处理,如果您删除实现转换所需的时间,则可能会减少恢复时间。

于 2010-03-09T10:06:34.477 回答