我在互联网和书本上随处可见,但我无法找到解决问题的方法,这看起来非常愚蠢!
我有一个后台线程的应用程序,用于检查iPhone是否已连接。当连接状态发生变化时,线程会在通知中心触发NSNotification,并且mainviewcontroller会监听它。 当事件发生时,调用通知中心上注册的mainviewcontroller选择器,并使控制台操作完美地运行。
这就成了问题,如果我要更改标签或与视图进行一些交互,则忽略对uiview元素的所有调用。我已尝试使用uiview动画块来更改alpha或调用setNeedsDisplay
但没有办法与视图互动。
我该怎么做?
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(changedOnlineStatus:)
name:@"onlineStatus"
object:nil];
-(void)changedOnlineStatus:(NSNotification*)notification
{
NSDictionary* note = (NSDictionary*)[notification userInfo];
NSString* onlineStat = (NSString*)[note objectForKey:@"isOnline"];
if([onlineStat isEqualToString:@"YES"])
{
offlineLabel.alpha=1;
}
else
{
offlineLabel.alpha=1;
}
}
答案 0 :(得分:2)
听起来像问题就是线程。您应该只更新主线程中的UI元素而不是后台线程。尝试将调用分派给主线程:
dispatch_async(dispatch_get_main_queue(), ^{
offlineLabel.alpha=1;
});