3

我有一个显示在屏幕上的主视图控制器和一个在后台运行的类(委托)获取位置。当我得到结果时,我调用视图控制器中的委托方法来更新屏幕上的标签。我尝试了几种方法,但仍然没有更新屏幕。

这是方法:

-(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];
}

我检查了控制台,它显示了正确的区域,但屏幕上仍然显示为空。我尝试了所有三种方法(上面已注释掉),但这些方法都没有更新屏幕。

4

1 回答 1

2

你可以尝试两件事:

  1. 调用updateDisplay主线程:

    [delegate performSelectorOnMainThread:@selector(updateDisplay) withObject:nil waitUntilDone:YES];
    

    最后,它正在访问UIKit,所以最好把它做好;

  2. 如果这没有帮助,请尝试:

    [_area setNeedsDisplay];
    

    在这种情况下,也建议在主线程上调用该方法。

于 2013-03-12T10:36:26.160 回答