在 "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];
。
我在 "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];
。