gpt4 book ai didi

ios - 从另一个线程更改按钮图标/切换按钮

转载 作者:行者123 更新时间:2023-12-01 17:03:41 25 4
gpt4 key购买 nike

我试图通过按UITableViewCell上的按钮在后台运行线程。

现在,我有一个方法,每次按下按钮时都会调用该方法,它会更改图标(从播放到暂停),并执行其他操作。

如果线程成功完成(尽管您可以使用单元格上的按钮将其停止),则此按钮应从暂停图标过渡到播放图标,以表明线程已正确完成。

我尝试将单元格本身传递到另一个线程内,然后编辑dispatch_sync内的单元格按钮。此处的xCode不会引发任何错误,但按钮图标不会更改。

这是代码:

-(void)thread:(NSDictionary*)taskAssets{
@autoreleasepool {

// Unpacking data
TaskObject *taskData = taskAssets[@"taskData"];
UILabel *statusLabel = taskAssets[@"statusLabel"];
CustomTaskCell *cell = taskAssets[@"cell"];

printf("Wow, this is the thread data: %s\n", [taskData.getTaskName UTF8String]);
sleep(10);
printf("Wow, the thread is done\n");
dispatch_sync(dispatch_get_main_queue(), ^{
[cell setSelected:FALSE];
[cell.button setImage:[UIImage imageNamed:@"playIcon"] forState:UIControlStateNormal];
statusLabel.text = @"Status: Finished";

});
}
}

有什么办法可以做到这一点?

这是更改图标的地方(是发送方是按钮)
- (IBAction)runTask:(id)sender {
if ([sender isSelected]) {
[sender setImage:[UIImage imageNamed:@"playIcon"] forState:UIControlStateNormal];
[sender setSelected:NO];
[self updateStatus:@"Stopped"];
} else {
[sender setImage:[UIImage imageNamed:@"pauseIcon"] forState:UIControlStateSelected];
[sender setSelected:YES];
[self updateStatus:@"Running..."];
[self launchThread]; // This is where the thread starts...
}
}

最佳答案

我可以看到您打来的[self launchThread];
发送者/信元如何最终显示在-(void)thread:(NSDictionary*)taskAssets的词典中

我不完全了解@autoreleasepool的作用,但是也许您可以尝试以下方法:

-(void)thread:(NSDictionary*)taskAssets{
@autoreleasepool {
// Unpacking data
__block TaskObject *taskData = taskAssets[@"taskData"];
__block UILabel *statusLabel = taskAssets[@"statusLabel"];
__block CustomTaskCell *cell = taskAssets[@"cell"];

printf("Wow, this is the thread data: %s\n", [taskData.getTaskName UTF8String]);
sleep(10);
printf("Wow, the thread is done\n");
dispatch_sync(dispatch_get_main_queue(), ^{
[cell setSelected:FALSE];
[cell.button setImage:[UIImage imageNamed:@"playIcon"] forState:UIControlStateNormal];
statusLabel.text = @"Status: Finished";
});
}
}

关于ios - 从另一个线程更改按钮图标/切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784339/

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