2014-01-21 4 views
1

У меня есть UIButton с titleLabel, например, так: @"Download it!"Update titleLabel UIButton

Я хотел бы после моего окончания загрузки, обновления titleLabel моей кнопки с другим текстом, например, так: @"Already downloaded!"

Я могу изменить состояние (включить или отключить), но невозможно обновить/обновить заголовок метки UIButton.

Любая идея, как это сделать? Я пробовал [myButton setNeedsDisplay];, но он не работает.

Благодарим за ваши предложения и помощь.

UPDATE 1: Решение:

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

Вы используете [button setTitle: <# (NSString *) #> forState: <# (UIControlState) #>], чтобы обновить его? – tanzolone

+0

+1 для обоих, спасибо всем! – Lapinou

+1

@ Lapinou. Одно предложение. Если у вас есть ответ на ваш вопрос, лучше принять ответ (любой здесь) .. так что вопрос не будет идти в «Неотвеченные вопросы» .. Надеюсь, вы понимаете .. –

ответ

5

Вы пробовали это?

[yourButton setTitle:<#(NSString *)#> forState:<#(UIControlState)#>] 
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

Все пример объяснен с этим постом объясняет изменение заголовка на различном состоянии кнопки как UIControlStateNormal, UIControlStateHighlighted но это не делается при полной загрузке.

Самый простой способ - уведомить viewController о завершении некоторого процесса (загрузки). Затем вы изменяете заголовок кнопки по мере необходимости.

Возможно, попробуйте этот код.

  1. Добавить кнопку & уведомления наблюдателя в вашем 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. Теперь определим целевой метод Наблюдателя для выполнения заголовка Кнопка Change как

    -(void)notifyDownloadComplete:(NSNotification*)note { 
        self.someButton.title = @"Already Downloaded"; 
    } 
    
  3. Теперь добавьте метод загрузки через GCD &, после чего опубликуйте уведомление после его завершения ,

    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.

Надеюсь, что это поможет.

Смежные вопросы