我正在为我当前的iPhone应用程序编写一个“加载”功能。
实际上我想做的就是让用户回到他/她离开的地方。为此,我想重新创建之前出现的所有UIViewController
。
我的问题是如果我只是致电UIViewController
,[[self navigationController] pushViewController:newController animated:YES];
就不会出现。
当作为事件处理程序调用时,相同的代码可以正常工作,就像触摸按钮一样。但是,如果我在没有偶数的情况下执行相同操作(例如viewDidLoad
中),则不会调用新视图控制器的loadView
方法。
我的实际代码(带有一些伪元素):
- (void)viewDidLoad {
[super viewDidLoad];
if (loading)
[self onSomeEvent];
}
- (void)onSomeEvent {
UIViewController *newController = //init....;
[[self navigationController] pushViewController:newController animated:YES];
[newController release];
}
我猜viewDidLoad
不适合做这样的电话,但那是什么?
答案 0 :(得分:0)
我不确定在您的控制器上传播“加载”功能是实现它的最佳方式。
我宁愿把它放在你的应用程序的init中,在applicationDidFinishLauching
部分。然后你有一个集中的地方,你恢复以前的状态(更容易处理恕我直言)。
假设您想要实现一些更高级的恢复功能,例如:
在applicationDidFinishLauching中使用所有这些代码会更容易:它们都在一个点上进行管理。
此外,在将旧状态恢复到导航控制器时,您可以避免使用转场,并在推动控制器时使用animated:NO
而不是YES
。从您的角度来看,处理起来会更容易,如果您删除实现转换所需的时间,恢复时间可能会减少。