我正在处理我正在处理的iPhone应用程序的问题。
它使用一个名为Radio的单独类来流入一个站。当更新流的标题时,它使用updateTitle方法回调到RadioViewController:
- (void)updateTitle:(NSString *)newTitle
{
NSLog(@"update title called with title: %@", newTitle);
[self.nowPlaying setText:newTitle];
}
出于某种原因,我似乎无法立即进行更新。如果我从viewDidLoad调用setText,那么它可以正常工作。
此外,通过任何类型的用户交互,无论是按钮还是其他内容,文本都会发生变化,如:
- (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并没有改变。
答案 0 :(得分:0)
设置标题后,NSLog self.nowPlaying.title以确保它已被更改。
您可能需要明确的[self.nowPlaying setNeedsDisplay];
来强制更新。
如果没有,请进行常规调试以确保self.nowPlaying是真实对象等。您确定nowPlaying是否连接到IB中的正确标签?
答案 1 :(得分:0)
尝试按如下方式编辑updateTitle方法:
NSLog(@"Update title will update %@ with %@", self.nowPlaying, newTitle);
[self.nowPlaying performSelectorOnMainThread:@selector(setText:) withObject:newTitle waitUntilDone:NO];
我感觉你在后台线程上更新标题,这在许多用例中都不受支持。