1

尝试修改 UINavigationItem 中的标题

// this modify the title
self.navigationItem.title    = @"Any title";
// this does not
navigationItem.title    = @"Any title";

为什么?

4

1 回答 1

2

navigationItem不是它正在使用的对象。是使用 a和 aself.navigationItem时按需创建的只读属性。您当然可以创建自定义,但在标准设置中通常不赞成这样做,您不需要这样做。UIViewControllerUINavigationControllerUINavigationItemUINavigationController

至于self.title,它只是一个捷径self.navigationItem.title。快捷方式的原因是它可以在必要时用于其他容器类型的其他地方,包括您自己的自定义容器。

如果你解构正在发生的事情。很可能会发生这种情况,如果您访问一个基本的 UINavigationController 会加载导航项,则加载您的标题:

- (UINavigationItem)navigationItem
{
    if (!_navigationItem) {
        _navigationItem = [[UINavigationItem alloc] initWithTitle:self.title];
    }

    return _navigationItem;
}

您可以在此处阅读有关 Apple 的更多信息:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp /UIViewController/navigationItem

于 2013-01-16T19:39:51.817 回答