在 "viewDidLoad" 中重新加载 UIViewController

Reload UIViewController in "viewDidLoad"

我在 "viewDidLoad" 方法中更改了 2 个 UILabel 的值,但之后我需要刷新视图才能显示这些值。目前,UILabels 显示先前选择的单元格的值。我需要在更改标签值后立即进行刷新。 "setNeedsDisplay" 方法不起作用。

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    _nameLabel.text = _selectedLocation.name;
    _addressLabel.text = _selectedLocation.address;

    [self.view setNeedsDisplay];

}

一个非常愚蠢的错误。事实证明,当我将 segue 转换到下一个视图时,我实际上是将它从物理单元格拖到目标控制器上。但是,我应该简单地将发送 uiview 控制器连接到带有 segue 的目标 viewcontroller,然后手动处理转换。这修复了它,所以没有必要像我试图做的那样 "refresh or reload" UIView。

根据您的评论,我认为您正在尝试执行以下操作:

- (void)updateLabelTexts {

    _nameLabel.text = _selectedLocation.name;
    _addressLabel.text = _selectedLocation.address;
}

无论您在哪里更改 _selectedLocation 值:

//Just an example
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    _selectedLocation = _yourLocationsArray[indexPath.row];

    //now you call your update method
    [self updateLabelTexts];
}

重点是您必须在更新值后立即调用 [self updateLabelTexts];