0

当我阅读 UINavigationController 的 api 文档时,属性 navigationItem 有一个提示:

避免将导航项中条形按钮项的创建与视图控制器视图的创建联系起来

我不明白这是什么意思,谁能详细解释一下

4

1 回答 1

0

这可能是最近才添加到文档中的,因为我今天第一次偶然发现了这个。此外,在我看到的几乎所有示例代码中,条形按钮的初始化都发生在 viewDidLoad 方法中——根据引用的语句,这显然不是执行此操作的最佳位置。

Apple 告诉我们的是,当 viewDidLoad 方法尚未执行或根本没有执行时,可能会请求 navigationItem 的内容。当您一次推送多个视图控制器时会发生这种情况。例如,通过使用setViewControllers:animated:接口或执行以下操作:

ViewController1 *firstViewController = [[ViewController1 alloc] init];
ViewController2 *secondViewController = [[ViewController2 alloc] init];
[navigationController pushViewController:firstViewController animated:YES];
[navigationController pushViewController:secondViewController animated:YES];

在这种情况下,直到用户导航回firstViewController的 viewDidLoad 方法才会被调用。如果您在firstViewController中设置了title属性,您会希望后退按钮带有您在firstViewController中设置的标题标签。然而,返回按钮将被称为“返回”,因为当 UINavigationController 请求它时firstViewController的 title 属性为零。

结论是:将条形按钮项的创建与视图的创建联系起来适用于大多数情况。不过请记住,您可能会遇到在创建视图之前或不创建视图之前需要导航项信息的情况。在这种情况下,请考虑在 viewcontrollers 的init方法中初始化navigationItem属性。

于 2013-07-09T14:38:00.980 回答