使用默认导航栏文本

Posted

技术标签:

【中文标题】使用默认导航栏文本【英文标题】:using the default Navigation bar text 【发布时间】:2012-06-07 20:02:20 【问题描述】:

我正在使用情节提要并开发 iPhone 应用程序并使用导航控制器。

当我实现它时,我注意到它使用视图的名称而不是使用默认的“后退”文本,有没有办法强制它使用“后退”?

谢谢

【问题讨论】:

【参考方案1】:

当您显示UINavigationController 时,大概是在应用程序的委托中,使应用程序的委托也成为导航控制器的委托。然后观察视图控制器被弹出和推送:

AppController.h

#import <UIKit/UIKit.h>

@interface AppController.h : NSObject 
<UIApplicationDelegate, UINavigationControllerDelegate> 

    UIWindow *window;
    UINavigationController *viewController;

/* MARK: Interface Outlets */
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *viewController;
@end

AppController.h

#import "AppController.h"

@implementation AppController.h
/* MARK: Init and Dealloc */
- (void)dealloc 
    self.window = nil;
    self.viewController = nil;

    [super dealloc];


/* MARK: Interface Outlets */
@synthesize window, viewController;

/* MARK: Application Delegate */
- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    assert(self.window != nil);
    assert(self.viewController != nil);

    self.viewController.delegate = self;

    /* other initialization */

    [self.window makeKeyAndVisible];

    return YES;


/* MRK: Navigation Controller Delegate */
- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)vc 
                    animated:(BOOL)animated

    UIBarButtonItem *myItem = /* initialize */;

    navigationController.topViewController.navigationItem.backBarButtonItem = nil;
    navigationController.topViewController.navigationItem.backBarButtonItem = myItem;

@end

此外,您可以通过检查-[NSObject isKindOfClass:] 是否匹配所需的视图控制器来忽略自定义视图控制器。

【讨论】:

【参考方案2】:

来自http://osmorphis.blogspot.com/2009/03/trapping-uinavigationbar-back-button.html

您可以在标准后退按钮上更改的唯一内容是文本。默认情况下,这是控制器的标题。你可以用这样的代码来改变它:

[self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil]; 

只需替换

initWithTitle:@"New Title"

initWithTitle:@"Back"

【讨论】:

【参考方案3】:

在提问之前尝试搜索。

似乎可以将以下代码添加到调用向下钻取的控制器中,即 master-detail 中的 master。

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];

感谢 iPhoneGuy:iPhone Dev SDK

【讨论】:

以上是关于使用默认导航栏文本的主要内容,如果未能解决你的问题,请参考以下文章

一次性解决导航栏的所有问题

导航栏项目的文本颜色不反映自定义 CSS [重复]

底部导航栏:按下时文本大小增加?

更改导航栏控制器文本

从 SwiftUI 中的导航栏中删除后退按钮文本

叠加在内联导航栏之上