Доступ к UILabel Outlet без участия пользователя - PullRequest
1 голос
/ 10 июля 2009

У меня проблема с приложением для iPhone, над которым я работаю.

Он использует отдельный класс под названием Radio, который транслирует станцию. Когда заголовок потока обновляется, он вызывает метод RadioViewController с помощью метода updateTitle:

- (void)updateTitle:(NSString *)newTitle
{
    NSLog(@"update title called with title: %@", newTitle);
    [self.nowPlaying setText:newTitle];
}

По какой-то причине я не могу заставить себя играть в обновления. Если я вызываю setText из viewDidLoad, то он работает нормально.

Кроме того, при любом типе взаимодействия с пользователем, будь то кнопка или что-то еще, текст меняется хорошо, например:

- (IBAction)playButton:(id)sender
{
[self.nowPlaying setText:@"now playing test"];
}

nowPlaying связан в XIB и настроен так:

    IBOutlet    UILabel     *nowPlaying;
@property(nonatomic, retain) UILabel *nowPlaying;

И updateTitle настроен как

- (void)updateTitle:(NSString *)title;

Код строится и работает нормально, без ошибок. Но UILabel просто не меняется.

Ответы [ 2 ]

0 голосов
/ 11 июля 2009

Попробуйте отредактировать ваш метод updateTitle следующим образом:

NSLog(@"Update title will update %@ with %@", self.nowPlaying, newTitle);
[self.nowPlaying performSelectorOnMainThread:@selector(setText:) withObject:newTitle waitUntilDone:NO];

У меня такое чувство, что вы обновляете заголовок в фоновом потоке, который не поддерживается во многих случаях использования.

0 голосов
/ 11 июля 2009

После того, как вы установили заголовок, NSLog self.nowPlaying.title, чтобы убедиться, что он изменился.

Вам может потребоваться явное [self.nowPlaying setNeedsDisplay]; для принудительного обновления.

Если нет, выполните обычную отладку, чтобы убедиться, что self.nowPlaying является реальным объектом, и т. Д. Вы уверены, что сейчас Playplay подключен к нужной метке в IB?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...