gpt4 book ai didi

ios - UILabel不会每次都使用for循环进行更新

转载 作者:行者123 更新时间:2023-12-01 18:14:44 25 4
gpt4 key购买 nike

我正在尝试对UICollectionViewCell中的标签进行动画处理。我想随机遍历数组,并随机设置标签10次,然后停在数组中的随机字符串处。

问题是,它遍历了我的数组(使用简单的NSLog对其进行了调试),但直到循环的最后一个数字被使用时才使用标签setText,然后再设置标签。

这是我的代码:

-(void)animate{

long index;

for(detail* cells in [[self col] visibleCells]){

NSIndexPath *indexPath = [[self col] indexPathForCell:cells];

if ([array count] >= 3) {
index = 2 * indexPath.section + indexPath.row;
}else{
index = 1 * indexPath.section + indexPath.row;
}

for (int i = 0; i <= 10; i++) {
[[cells detailLabel] setText: [[array objectAtIndex:index] returnRandomOptie]];
[NSThread sleepForTimeInterval:0.10];
NSLog(@"%i", i);
}

}
}

这是我自定义Cell类的 returnRandomOptie:
-(NSString *) returnRandomOptie {
NSUInteger randomIndex;
NSString *string;

if ([opties count] != 0) {
randomIndex = arc4random() % [opties count];
string = [NSString stringWithFormat:@"%@", [opties objectAtIndex:randomIndex]];
}

return string;
}

因此,基本上我希望动画方法中的for循环始终在标签中设置文本。现在,它不这样做。就在最后一个循环。

我究竟做错了什么?

亲切的问候!

最佳答案

您必须执行sleep async并更新主线程中的标签,请尝试以下操作:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (int i = 0; i <= 10; i++) {
dispatch_async(dispatch_get_main_queue(), ^{
[[cells detailLabel] setText: [[array objectAtIndex:index] returnRandomOptie]];
});
[NSThread sleepForTimeInterval:0.10];
NSLog(@"%i", i);
}
});

关于ios - UILabel不会每次都使用for循环进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com