Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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
Iphone 易巴布托教派名称变更_Iphone_Objective C_Uibutton_Uinavigationbar_Uibarbuttonitem - Fatal编程技术网

Iphone 易巴布托教派名称变更

Iphone 易巴布托教派名称变更,iphone,objective-c,uibutton,uinavigationbar,uibarbuttonitem,Iphone,Objective C,Uibutton,Uinavigationbar,Uibarbuttonitem,我有以下UIBarButton项: UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 45.0f, 30.0f)]; [backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(bac

我有以下UIBarButton项:

  UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 45.0f, 30.0f)];
    [backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchDown];
    backButton.titleLabel.text = @"Back";
    backButton.titleLabel.font = [UIFont fontWithName:@"texgyreadventor-regular.otf" size:20.0f];
    backButton.titleLabel.textColor = [UIColor whiteColor];
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    _backItem = backItem;
在其他方法中,我将其设置在导航栏上,如下所示:

[self.navigationItem setLeftBarButtonItem:_backItem]

到目前为止,一切正常。但就在我将其添加到顶部的导航栏之前,我想更改它的文本。以下是我尝试做的一件事:

self.navigationItem.leftBarButtonItem.title=@NEW title

然而,这是行不通的。如何在运行时动态添加标题?

而不是

self.navigationItem.leftBarButtonItem.title = @"NEW TITLE";
使用

更新: 如果要在导航栏上添加标题之前更改标题,请执行以下操作

UIButton *backButton = (UIButton *)_backItem.customView;
backButton.titleLabel.text = @"changed";

您可以使用以下方法再次访问该按钮:

UIView* view = self.navigationItem.leftBarButtonItem.customView;
UIButton* button = (UIButton*)view;
[button setTitle: @"NEW TITLE" forState: UIControlStateNormal];
您是否正在启动iOS Nayefc,我看到您在这几天有很多问题:

以下是解决方法:

 [button setTitle:@"Back" forState:UIControlStateNormal];

必须定义状态。

对于刚才看起来像我的人来说,在较新版本的iOS中,接受的答案不再有效。它已成为barButton.title,这是一个读写字符串?在Swift或NSStringin Obj-C中。

这不起作用,因为它会更改backButton的标题,而该标题不在导航栏上。@Nayefc,是的,我来自安曼,您到底想更改什么,从您的问题来看,您似乎想更改您添加的按钮的标题?请解释一下。真奇怪,你一定是出了什么问题doing@Nayefc张贴你的问题是什么,你采取了哪些步骤,请使用清晰的语言解释你试图实现的目标和你的问题是什么:@Legolas这需要一个drawRect方法。。。那么你在说什么呢?另一个解决方案是,你可以在类级别全局地使用NSMutableString。将“返回”放在字符串中,并传递到按钮标签,然后在添加更改字符串之前,将字符串替换为“新标题”。@KhalidUsman这不是一场对抗低效率的竞赛。你应该接受Paul de Lange的答案,因为他给了你这个答案:它不起作用。他所做的是检索该按钮并将其分配给一个按钮,更改标题并且从不将其设置回原来的位置。我将编辑他的答案并将其标记为正确。谢谢奥马尔!不,你不必把它设置回去,我只要检索指向按钮的指针,然后在那个地址更改对象的title属性。顺便说一句:我不知道你可以接受你自己的答案,现在我明白了为什么有些人会无缘无故地享有如此高的声誉。保罗:不,这是行不通的。除非将指针设置为弱指针,否则它将无法工作。这是有道理的。我还测试了它。我编辑了你的答案并想将其标记为正确,但你恢复了更改并-1'回复了我,所以我想我不会:保罗,我也试过了。所以我可以保证它不起作用。不过,让我来解释一些理论:button并不像您想象的那样指向导航栏中的bar button项。默认情况下,它将根据圆弧的定义保留一个新对象。要使其按您希望的方式运行,必须在其上指定弱。此外,UIButtons需要将标题与状态匹配。这个答案得到了WWDC一位苹果工程师的支持——上周,我认识的人在那里问我按钮和标题是如何工作的。
 [button setTitle:@"Back" forState:UIControlStateNormal];