说我希望后退按钮保持@"Back"
而不是UIViewController
的标题
这样可行
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
这是一个更明智的选择
self.navigationItem.backBarButtonItem.title = @"Back";
但事实并非如此。
为什么?
答案 0 :(得分:5)
self.navigationItem.backBarButtonItem的默认值为nil
(调用nil object
上的任何函数都不会执行任何操作。)
你必须先用对象初始化它。
答案 1 :(得分:2)
最初self.navigationItem.backBarButtonItem
相当于UIBarButtonItem *backBarButtonItem = nil
,因此只需调用self.navigationItem.backBarButtonItem.title = @"Back";
即表示您设置的UIBarButtonItem
标题不存在。您实际上从未将对象分配给self.navigationItem.backBarButtonItem
。此外self.navigationItem.backBarButtonItem
相当于[[self navigationItem] setBackBarButtonItem:(UIBarButtonItem)];
,因此将@"Back"
传递给此将无法正常工作,这样做实际上会产生我相信的警告。您应该无法将NSString *
传递给应该UIBarButtonItem *
的参数。
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
基本上等同于UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
说实话,我会说这样做
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backBarButtonItem];
这会更好,更容易理解,但这只是我的意见。请记住首先初始化对象。