我如何自定义导航返回按钮在iOS 7及以上没有标题?(即只使用箭头)

self.navigationItem.leftBarButtonItem = self.editButtonItem;

我只是想知道它们是否有self。backbuttonitem;

OR

像这样的东西?

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
                   initWithBarButtonSystemItem:UIBarButtonSystemItemBACK 
                   target:self action:@selector(back)];

当前回答

我找到了一个简单的方法,让我的返回按钮与iOS单箭头。

让我们假设你有一个导航控制器从ViewB到ViewA。在IB中,选择ViewA的导航栏,你应该看到这些选项:标题,提示和返回按钮。

ViewA导航栏选项

诀窍是在前一个视图控制器(view A)的选项中选择你的命运视图控制器返回按钮的标题(ViewB)。如果你不填写“返回按钮”选项,iOS将自动将标题“返回”加上前一个视图控制器的标题。因此,您需要用一个空格填充这个选项。

在“返回按钮”选项中填充空格

结果:

其他回答

你不能以你想要的方式访问导航backButtonItem,你需要创建自己的返回按钮,如下所示:

- (void)loadView
{
    [super loadView];
    UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 44.0f, 30.0f)];
    [backButton setImage:[UIImage imageNamed:@"back.png"]  forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(popVC) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
}

当然了:

- (void) popVC{
  [self.navigationController popViewControllerAnimated:YES];
}

你可以子类化UINavigationController,将自己设置为委托,并在委托方法navigationController:willShowViewController:animated中设置backBarButtonItem:

@interface Custom_NavigationController : UINavigationController <UINavigationControllerDelegate>

@end

@implementation Custom_NavigationController

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.delegate = self;
}

#pragma mark - UINavigationControllerDelegate

- (void)navigationController:(UINavigationController *)navigationController     willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
}

@end

唯一对我有效的方法是:

navigationController?.navigationBar.backItem?.title = ""

更新:

当我改变segue动画标志为真(之前是假的),唯一适合我的方法是:

navigationController?.navigationBar.topItem?.title = ""

添加新的UIBarButtonItem到左边的UINavigationItem 改变UIBarButtonItem的使用方式 现在,点击UINavigationItem,并从outlets滑动barBackButtonItem到左UIBarButtonItem

在你的第一个ViewController的prepareForSegue:方法中,你设置视图标题为@"",所以当下一个视图被推送时,它将显示前一个ViewController标题为@""。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    self.navigationItem.title = @" ";
}

唯一的问题是,当你点击返回按钮时,你之前的视图将没有标题,所以你可以在viewWillAppear上再次添加它:

-(void)viewWillAppear:(BOOL)animated{
   self.navigationItem.title = @"First View Title";
}

我不太喜欢这个解决方案,但它是可行的,我没有找到其他方法来做到这一点。