【发布时间】:2014-07-25 12:55:59
【问题描述】:
假设您将一个新的 View Controller 推送到导航堆栈上,并且需要设置一个 UI 属性(例如:UI 标签的文本或其他内容)。初始化 VC 时,它的视图未设置(因此它们可能为零)。因此,设置属性将不起作用。例如:
SomeViewController *vc = [[SomeViewController alloc] init];
SomeViewController.someUILabel.text = @"foo";
[self.navigationController pushViewController:vc animated:YES];
这不会设置 UI 标签的文本,因为 vc.view 及其子视图为零。解决此问题的几种方法是:
- 在 VC 上调用
init后,执行[vc view]之类的操作,这将加载视图,然后允许您设置属性。 - 设置非 UI ivar,然后在
viewDidLoad中设置 UI,如下所示: SomeViewController *vc = [[SomeViewController alloc] init]; SomeViewController.uiTextLabel = @"foo"; [self.navigationController pushViewController:vc 动画:YES]; // 在 viewDidLoad 中 self.someUILabel.text = self.uiTextLabel
有没有一种公认的方法来解决这个问题?其中一个比另一个更好还是有不同的解决方案?
【问题讨论】:
-
你的意思是 vc.someUILabel.text = @"foo"; ?
-
在第二个视图控制器中获取 nsstring 属性并在推送时设置它。并在 secondviewcontroller 中使用它来设置文本。
标签: ios