最近写一个小代码时候发现一个问题:- (void)viewDidLoad {
[super viewDidLoad];
NSString *str;
for (int i = 1; i < 7; i++) {
str = [NSString stringWithFormat:@"%d",i];
self.lbl.text = str; // 设置lbl文本 = i
[NSThread sleepForTimeInterval:0.5]; // 暂停0.5s
}
}就是拉了一个lable控件,在界面上每隔0.5s,依次显示1 - 6 ,但是仿真结果却是一直停在进入的界面,直到代码执行完,lbl直接显示6.求问大神这是为什么???
[super viewDidLoad];
NSString *str;
for (int i = 1; i < 7; i++) {
str = [NSString stringWithFormat:@"%d",i];
self.lbl.text = str; // 设置lbl文本 = i
[NSThread sleepForTimeInterval:0.5]; // 暂停0.5s
}
}就是拉了一个lable控件,在界面上每隔0.5s,依次显示1 - 6 ,但是仿真结果却是一直停在进入的界面,直到代码执行完,lbl直接显示6.求问大神这是为什么???
解决方案 »
- 如何让willAnimateRotationToInterfaceOrientation对所有可见视图有效?
- 这种UILabel是怎么做的?
- 现金求助,如何修改一个iphone程序的icon图标
- warning: assignment makes pointer from integer without a cast
- Sun将开发针对苹果iPhone的Java平台
- 刚看到微博上有华为开发者联盟官方微博举办的中秋活动,有人看到了吗?
- 请教各位前辈。。。
- ios 中能不能把侧边栏做成翻页效果?
- ios检测网络是否有链接?
- Objective-C 字典怎么按值比较
- 用applicationloader3.0上传APP出现问题
- iOS的 datePicker如何不显示约束外的时间
其次不能用 [NSThread sleepForTimeInterval:],它会屏蔽所有的输入,比如按钮的响应。
{
[super viewDidAppear:animated];
[self showNumber: [NSNumber numberWithInt:1]];
}-(void)showNumber:(NSNumber *)numInt
{
NSInteger intValue = [numInt integerValue];
if(intValue>6)
{
return;
}
self.label.text = [NSString stringWithFormat:@"%ld", (long)intValue];
[self performSelector: @selector(showNumber:) withObject:[NSNumber numberWithInt: intValue+1] afterDelay:0.5f];
}
-(void) shownum:(NSNumber*)num{
// 显示数值
}
-(void) backthread{
for (int i=0; i<6; i++) {
[NSThread sleepForTimeInterval:0.5];
[self performSelectorOnMainThread:@selector(shownum:) withObject:[NSNumber numberWithInt:i] waitUntilDone:NO];
}
}
- (void)viewDidLoad {
[super viewDidLoad];
[self performSelectorInBackground:@selector(backthread) withObject:nil];
}