我有一个带有titleLabel的UIButton,例如:@"Download it!"
我希望在下载完成后,使用其他文本更新我的按钮的titleLabel,例如:@"Already downloaded!"
我可以更改状态(启用与否)但无法刷新/更新UIButton的titleLabel。
知道怎么做吗?我试过[myButton setNeedsDisplay];
,但它不起作用。
感谢您的建议和帮助。
更新1: 解决方案:
[yourButton setTitle:<#(NSString *)#> forState:<#(UIControlState)#>]
答案 0 :(得分:5)
你试过这个吗?
[yourButton setTitle:<#(NSString *)#> forState:<#(UIControlState)#>]
答案 1 :(得分:2)
您可以更改按钮标题标签中的文字。
[aButton setTitle:@"Already downloaded!" forState:UIControlStateNormal];
有关该主题的更多信息以及控制状态的完整列表,请参阅:https://developer.apple.com/library/ios/documentation/uikit/reference/uicontrol_class/reference/reference.html#//apple_ref/doc/c_ref/UIControlState
答案 2 :(得分:2)
本文解释的所有示例都解释了按钮各种状态的标题更改,例如UIControlStateNormal
,UIControlStateHighlighted
,但在下载完成时却没有这样做。
最简单的方法是通知您的viewController
某个进程(下载)已完成。然后根据需要更改按钮标题。
可以试试这段代码。
添加按钮&amp; ViewController viewDidLoad
中的通知观察者
self.someButton.title = @"Download Now"; // set the button title
// Add notification Observer
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notifyDownloadComplete:)
name:@"DOWNLOAD_COMPLETE"
object:nil];
现在定义Observer的目标方法,以执行Button title Change as
-(void)notifyDownloadComplete:(NSNotification*)note {
self.someButton.title = @"Already Downloaded";
}
现在通过GCD&amp;添加下载方法。然后在通知完成后发布通知。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//Here your non-main thread. Try Downloading something
dispatch_async(dispatch_get_main_queue(), ^{
//Here you returns to main thread.
[[NSNotificationCenter defaultCenter] postNotificationName:@"DOWNLOAD_COMPLETE"
object:nil];
});
});
这会将self.someButton
的标题更改为您想要的任何内容,例如Already Downloaded
。
希望有所帮助。