我正在编写一个Objective-c程序,它根据时间进行一些计算,最终每秒都会更新UILabel。
在这里解释一下这个概念的一些简化代码,我把它放在处理视图的类的viewDidLoad中。
- (void)viewDidLoad {
[super viewDidLoad];
// how do i make this stuff happen AFTER the view has loaded??
int a = 1;
while (a < 10) {
NSLog(@"doing something");
a = a + 1;
sleep(1);
}
}
我的问题是代码会暂停加载视图,直到循环全部完成(在这种情况下为10秒)。
在视图加载完毕后,我应该在哪里放置要触发的代码?
新手问题我知道= /
答案 0 :(得分:1)
viewDidAppear
可能是你最好的选择。
顺便说一下,睡眠(1)没有帮助......这将使你的应用程序像计算中的挂起一样。除非你试图延迟它,否则删除那行代码。
如果您想要倒计时或计时计时器......请参阅此how to show countdown on uilabel in iphone?
答案 1 :(得分:1)
您需要做的是将长时间运行的代码放在另一个线程上。然后从viewDidAppear方法启动此线程。在另一个问题上查看my response。我提出的代码正是我认为你需要研究的内容。 (并显示一个繁忙的指示器,但您可以查看该部分,只需查看线程及其启动方式以及线程如何告知UI已完成。