Objective c 为什么我能做这个而不能做另一个?
假设我希望后退按钮保留为@back,而不是UIViewController的标题 这会管用的Objective c 为什么我能做这个而不能做另一个?,objective-c,uibarbuttonitem,uinavigationitem,Objective C,Uibarbuttonitem,Uinavigationitem,假设我希望后退按钮保留为@back,而不是UIViewController的标题 这会管用的 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]; 一个更明智的选择是这样 self.navigationItem.backBarButtonItem.title
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
一个更明智的选择是这样
self.navigationItem.backBarButtonItem.title = @"Back";
但事实并非如此
为什么?self.navigationItem.BackBarButtonim的默认值为nil,在nil对象上调用任何函数都没有任何作用 您必须首先使用对象对其进行初始化。最初self.navigationItem.backBarButtonItem等同于UIBarButtonItem*backBarButtonItem=nil,因此只需调用self.navigationItem.backBarButtonItem.title=@Back;意味着你正在设置不存在的UIBarbuttonite的标题。实际上,您从未将对象指定给self.navigationItem.BackBarButtonim。另外,self.navigationItem.backBarButtonim等同于[[self-navigationItem]setbackBarButtonim:uiBarButtonim];所以把@传回去是行不通的,这样做实际上会产生一个警告,我相信。您不应该能够将NSString*传递到应采用UIBarButtonItem*的参数中 而self.navigationItem.BackBarButtonim=[[uiBarButtonim alloc]initWithTitle:@Back style:uiBarButtonimStyleBorded目标:nil操作:nil];基本上等同于UIBarButtonItem*backBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@Back style:UIBarbuttonItemStyleBordeded target:nil action:nil] 老实说,我想说,像这样做
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backBarButtonItem];
这将是更好,更容易理解,但这只是我的意见。记住先初始化对象