我无法理解为什么这不起作用。我试图在计时器周期命中时显示lblstatus:
-(void) viewDidAppear:(BOOL)animated
{
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(TimeForPictureCycle)
userInfo:nil
repeats:NO];
}
-(void)TimeForPictureCycle
{
while(YES)
{
[lblStatus setHidden:NO];
sleep(2);
[lblStatus setHidden:YES];
sleep(3);
}
}
答案 0 :(得分:3)
您在主线程上调用sleep()
,这意味着在您将标签设置为hidden
后该线程暂停并阻止运行循环继续,因此无法更新您的UI。您当前的代码简单地阻止了整个应用程序。
你能做的是:
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.showTimer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(showLabel)
userInfo:nil
repeats:NO];
}
-(void)showLabel
{
[lblStatus setHidden:NO];
self.hideTimer = [NSTimer scheduledTimerWithTimeInterval:2
target:self
selector:@selector(hideLabel)
userInfo:nil
repeats:NO];
}
-(void)hideLabel
{
[lblStatus setHidden:YES];
self.showTimer = [NSTimer scheduledTimerWithTimeInterval:3
target:self
selector:@selector(showLabel)
userInfo:nil
repeats:NO];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.showTimer invalidate];
[self.hideTimer invalidate];
}
答案 1 :(得分:1)
您可以通过以下方式完成:
-(void)viewDidAppear:(BOOL)animated {
[lblStatus performSelector:@selector(setHidden:) withObject:0 afterDelay:1];
[lblStatus performSelector:@selector(setHidden:) withObject:@1 afterDelay:3];
}
我不确定为什么我可以将0作为对象传递,但它可以工作。