我有一个显示在屏幕上的主视图控制器和一个类(委托)在后台运行获取位置。当我得到结果时,我调用视图控制器中的委托方法来更新屏幕上的标签。我尝试了几种方法,但仍然没有更新屏幕。
方法如下:
-(void) updateDisplay
{
NSLog(@"%@",myPosition.currentArea);
_area.text = [NSString stringWithFormat:@"area = %@",myPosition.currentShopArea];
//[self.view performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:YES];
[self.view setNeedsDisplay];
//[self.view setNeedsLayout];
}
我检查控制台,它显示了正确的区域,但在屏幕上仍然显示null。我尝试了所有三种方法(上面已经注释过了),但没有一种方法可以更新屏幕。
您可以尝试以下两种方法:
-
在主线程上调用
updateDisplay
:[delegate performSelectorOnMainThread:@selector(updateDisplay) withObject:nil waitUntilDone:YES];
最后,它正在访问
UIKit
,所以最好做对; -
如果没有帮助,试试:
[_area setNeedsDisplay];
在这种情况下,最好在主线程上调用该方法