gpt4 book ai didi

ios - 推送新 VC 时设置 UI 属性的公认方法是什么?

转载 作者:行者123 更新时间:2023-11-28 22:01:45 25 4
gpt4 key购买 nike

假设您要将一个新的 View Controller 推送到导航堆栈并需要设置一个 UI 属性(例如:一个 UI 标签的文本或其他)。当您初始化 VC 时,它的 View 未设置(因此它们可能为零)。因此,设置属性将不起作用。例如:

SomeViewController *vc = [[SomeViewController alloc] init];
SomeViewController.someUILabel.text = @"foo";
[self.navigationController pushViewController:vc animated:YES];

这不会设置 UI 标签的文本,因为 vc.view 及其 subview 为 nil。有两种补救方法:

  1. 在 VC 上调用 init 后,执行类似 [vc view] 的操作,这将加载 View ,然后允许您设置属性。
  2. 设置一个非 UI ivar,然后在 viewDidLoad 中设置 UI,如下所示:
    SomeViewController *vc = [[SomeViewController alloc] init]; SomeViewController.uiTextLabel = @"foo";[self.navigationController pushViewController:vc animated:YES];// in viewDidLoadself.someUILabel.text = self.uiTextLabel

是否有公认的方法来摆脱这个问题?其中一个比另一个更好还是有不同的解决方案?

最佳答案

您不应该从另一个 View Controller 设置标签值。 Controller 控制它的 View 。你应该在你的 SomeViewController 中有一个 NSString 属性,并用你想要的字符串设置那个公共(public)属性。然后,在 SomeViewController viewDidLoad 方法中将标签的值设置为属性中的值。

关于ios - 推送新 VC 时设置 UI 属性的公认方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24956296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com