Objective c 如何将标题设置为leftBarButtonItem
我有根视图控制器和详细视图控制器。当我推到detailedViewController时,我会从根目录中得到带有标题的LeftBarButtonim。但我希望标题只是“回来”,没有更多。那怎么做呢 这没用Objective c 如何将标题设置为leftBarButtonItem,objective-c,ios,push,backbarbuttonitem,Objective C,Ios,Push,Backbarbuttonitem,我有根视图控制器和详细视图控制器。当我推到detailedViewController时,我会从根目录中得到带有标题的LeftBarButtonim。但我希望标题只是“回来”,没有更多。那怎么做呢 这没用 self.navigationItem.leftBarButtonItem.title = @"Back"; 创建我的on类型barButtonItem(例如带左箭头的104)并将其设置为leftBarButtonItem是一个糟糕的决定 在按下之前,除了手动更改rootViewContro
self.navigationItem.leftBarButtonItem.title = @"Back";
创建我的on类型barButtonItem(例如带左箭头的104)并将其设置为leftBarButtonItem是一个糟糕的决定
在按下之前,除了手动更改rootViewController的标题外,还有其他方法吗?来自Apple的文档:
反布托主义
当需要在上单击后退按钮时要使用的条形按钮项
导航栏
@属性(非原子,保留)UIBarButtonItem*backBarButtonItem
讨论
当此导航项目位于列表中顶部项目的正下方时
堆栈中,导航控制器为
此导航项中的导航栏。当此属性为零时,
导航项使用其title属性中的值创建
适当的后退按钮如果要指定自定义图像或
“后退”按钮的标题,可以指定自定义栏按钮项
(使用自定义标题或图像)改为使用此属性。什么时候
配置工具栏按钮项时,不要为其指定自定义视图;
导航项忽略“back bar”按钮中的自定义视图
无论如何
因此,您可以创建barButtonItem(例如,–initWithTitle:style:target:action:
)并将其分配给该属性
此外,如果您想为UIBarButtonItem
(左或右)创建自定义图像,我建议您创建一个类别扩展,如下所示:
//UIBarButtonItem+Extension.h
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action;
//UIBarButtonItem+Extension.m
+ (UIBarButtonItem*)barItemWithImage:(UIImage*)image title:(NSString*)title target:(id)target action:(SEL)action
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
button.titleLabel.textAlignment = UITextAlignmentCenter;
[button setBackgroundImage:image forState:UIControlStateNormal];
[button setTitle:title forState:UIControlStateNormal];
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
return [barButtonItem autorelease];
}
然后将其用作
UIBarButtonItem* backBarButtonItem = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"YoutImageName"] title:@"YourTitle" target:self action:@selector(doSomething:)];
今天我终于弄清楚了所有的皱纹,比上面简单多了 子项的“后退”按钮文本基于其父项中设置的值。仔细想想,这是显而易见的行为:如果一个视图控制器可以从两个父视图中访问,则“后退”按钮的文本应该取决于按下该按钮的用户 如果文本始终相同:
self.navigationItem.backBarButtonim.title=dynamicText代码>
self.navigationItem.backBarButtonim
,也无法设置nil
对象的标题。我相信这就是所有围绕这一点的困惑的根源
当然,您可以在运行时创建它,但是如果您已经在故事板/nib中完成了大部分工作,那么让解码器为您完成就更容易了
如果你对此更感兴趣,我也写了一篇关于这个主题的博客文章。它有一些功能。它对我有用:
[self.navigationItem.LeftBarButtonim setTitle:@“Back”]代码>
(返回箭头图像和自定义文本)关于这个问题已经有很多问题了。从那以后,还有很多事情要做。@Buron你说这个糟糕的决定是什么意思?UINavigationItem的backBarButtonim属性的实例是uiBarButtonim类型,而不是NSString类型。这样做很可能会导致崩溃。你是对的,很抱歉我从代码中复制时出错了。
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] init];
backButtonItem.title = NSLocalizedString(@"Back", nil);
self.navigationItem.backBarButtonItem = backButtonItem;