更新titleLabel UIButton

时间:2014-01-21 15:48:32

标签: ios iphone objective-c uibutton uilabel

我有一个带有titleLabel的UIButton,例如:@"Download it!"

我希望在下载完成后,使用其他文本更新我的按钮的titleLabel,例如:@"Already downloaded!"

我可以更改状态(启用与否)但无法刷新/更新UIButton的titleLabel。

知道怎么做吗?我试过[myButton setNeedsDisplay];,但它不起作用。

感谢您的建议和帮助。

更新1: 解决方案:

[yourButton setTitle:<#(NSString *)#> forState:<#(UIControlState)#>]

3 个答案:

答案 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)

本文解释的所有示例都解释了按钮各种状态的标题更改,例如UIControlStateNormalUIControlStateHighlighted,但在下载完成时却没有这样做。

最简单的方法是通知您的viewController某个进程(下载)已完成。然后根据需要更改按钮标题。

可以试试这段代码。

  1. 添加按钮&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];
    
  2. 现在定义Observer的目标方法,以执行Button title Change as

    -(void)notifyDownloadComplete:(NSNotification*)note {
        self.someButton.title = @"Already Downloaded";
    }
    
  3. 现在通过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];
           });
       });
    
  4. 这会将self.someButton的标题更改为您想要的任何内容,例如Already Downloaded

    希望有所帮助。