Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何将标题设置为leftBarButtonItem_Objective C_Ios_Push_Backbarbuttonitem - Fatal编程技术网

Objective c 如何将标题设置为leftBarButtonItem

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

我有根视图控制器和详细视图控制器。当我推到detailedViewController时,我会从根目录中得到带有标题的LeftBarButtonim。但我希望标题只是“回来”,没有更多。那怎么做呢

这没用

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;