Ios UINavigationItem标题

Ios UINavigationItem标题,ios,objective-c,properties,title,uinavigationitem,Ios,Objective C,Properties,Title,Uinavigationitem,试图修改UINavigationItem中的标题 // this modify the title self.navigationItem.title = @"Any title"; // this does not navigationItem.title = @"Any title"; 为什么?导航项不是它正在使用的对象self.navigationItem是在将UIViewController与UINavigationController一起使用时根据需要创建的只读属性。您当

试图修改UINavigationItem中的标题

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

为什么?

导航项
不是它正在使用的对象
self.navigationItem
是在将
UIViewController
UINavigationController
一起使用时根据需要创建的只读属性。您当然可以创建自定义的
UINavigationItem
,但在标准的
UINavigationController
设置中,这通常是不受欢迎的,您不需要这样做

至于
self.title
,它只是指向
self.navigationItem.title
的快捷方式。使用快捷方式的原因是,如有必要,可以在其他容器类型(包括您自己的自定义容器)中使用快捷方式

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

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

    return _navigationItem;
}
你可以在这里阅读更多关于苹果的评论: