Iphone 导航栏的自定义后退按钮

Iphone 导航栏的自定义后退按钮,iphone,ios,xcode,Iphone,Ios,Xcode,我已经提到了很多线程,以及其他一些关于自定义back按钮中的文本以显示所需字符串的线程。但是,它们不使用故事板。所以其中很多都不适用 为了给你一个背景,我通过故事板创建了我的视图view1和view2,我想使用view2上的后退按钮导航到view1。如何使用IB实现这一点 或者,我还尝试将self.navigationItem.backBarButtonItem.title设置为@Custom text;,但这并不奏效 有人能建议我如何更改view2上“后退”按钮的文本吗?谢谢 我不熟悉故事板

我已经提到了很多线程,以及其他一些关于自定义back按钮中的文本以显示所需字符串的线程。但是,它们不使用故事板。所以其中很多都不适用

为了给你一个背景,我通过故事板创建了我的视图view1和view2,我想使用view2上的后退按钮导航到view1。如何使用IB实现这一点

或者,我还尝试将self.navigationItem.backBarButtonItem.title设置为@Custom text;,但这并不奏效


有人能建议我如何更改view2上“后退”按钮的文本吗?谢谢

我不熟悉故事板

然而,通常情况下,诀窍是

在从view1切换到view2之前,在view2的“后退”按钮上设置view1的标题

[ViewController1 setTitle:@我想在view2的后退按钮中显示的文本]

切换回view1时,您不需要此标题。因此,在view1的viewcontroller实现中,您可以覆盖:

-void视图将显示:BOOLanimated{ [超级视图将显示:动画]; [self-setTitle:@我在视图中实际想要的标题1]; }


这样,当您从view1切换到view2时,您将触发希望显示在“后退”按钮上的标题。当您从view2切换回view1时,您将使用view1将出现的事实

以下是故事板解决方案:

在prepareForSegue中,将视图控制器的标题设置为适合“后退”按钮的短标题:

MyViewController *mvc = segue.destinationViewController;
mvc.title = @"Docs";
要将其更改回原样,请在视图中执行相反的操作:


我找到了问题的答案。下面描述的方法将允许您更改“后退”按钮的文本,而无需更改父视图控制器的标题

打开情节提要文件并单击连接两个ViewController的链接。 打开“实用程序”窗格并单击“属性检查器”。 给故事板序列一个有意义的标识符。在本例中,我称之为saveReturn。点击回车键接受。 打开父视图控制器的.m文件并插入代码

-voidprepareForSegue:UIStoryboardSegue*序列发送方:idsender { 如果[segue.identifier isEqualToString:@saveReturn] { self.navigationItem.backBarButtonItem=[[UIBarButtonItem alloc]initWithTitle:@Save&Return样式:uiBarbuttonItems样式有边框的目标:nil操作:nil]; } `}


您没有在问题中指定view1是否是view2的上一个视图,但如果您正试图这样做,请在“后退”按钮中使用自定义标题,那么在情节提要中就很容易做到这一点

如果在序列图像板中看不到导航栏,请在序列图像板中选择view1的视图控制器,并在属性检查器中,确保顶部栏中选择了导航栏而不是推断的导航栏


选择view1的导航栏,然后在属性检查器中有3个字段:标题、提示和后退按钮。如果将文本添加到“后退按钮”字段,当您从view1导航到view2时,“后退”按钮将使用此文本,而不是view2的“后退”按钮中的标题

我知道这是一个老问题-但为了完整性:

故事板的个人制作方式我喜欢在故事板中尽可能多地制作:

在具有要更改的后退按钮的视图之前的视图中,即要更改的后退按钮的目标,选择导航栏,并在属性检查器中更改后退按钮字段的值,这也是您可以更改视图名称的位置-请参见下文


我很确定你必须更改上一个视图的标题。我理解。当我更改view1上的标题时,view2上的“上一步”按钮将显示view1的标题。但我不希望标题出现在view1上。当该控制器弹出时将其更改回。是。可能在viewwillbeen和viewdidefine中。@凯文:我通过IB设置了viewController的标题,然后实现了-voidviewdidebeen:BOOLanimated{self.navigationItem.title=nil;},但它就是不起作用。在发布问题之前,我已经尝试过你的技巧。它就是不起作用。如果要自定义back按钮而不更改父视图控制器的标题,最好的方法是在父VC的实现文件中实现prepareForSegue方法。
self.title = @"Important Documents";