自定义后退按钮标题并保持向后滑动手势

Rex*_*Lam 5 uinavigationcontroller uibarbuttonitem ios ios7

问题:我想在像Whatsapp(<Chats(2)/ <Chats(3))这样的弹出视图控制器中自定义导航后退按钮标题。

但是,如果在弹出的视图控制器中分配新的backBarButtonItem,则会禁用向后滑动手势

self.navigationController.interactivePopGestureRecognizer.delegate = self;
Run Code Online (Sandbox Code Playgroud)

要保持手势正常工作,它将给您带来更多麻烦(麻烦太多了)。

Rex*_*Lam -1

回答:

经过一天的时间解决这个问题,我有一个非常简单和容易的解决方案,适用于 iOS 6 和 iOS 7 :

1)。AppDelegate 中的自定义样式(颜色、字体)(假设您将为所有控制器使用相同的样式)

2)。像这样创建一个自定义 UINavigationController :

CustomBackNavigationController.h

@interface CustomBackNavigationController : UINavigationController <UINavigationControllerDelegate>

@property (nonatomic, strong) UIBarButtonItem *backButton;

@end
Run Code Online (Sandbox Code Playgroud)

CustomBackNavigationController.m

@implementation CustomBackNavigationController

@synthesize backButton;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.delegate = self;
}


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

@end
Run Code Online (Sandbox Code Playgroud)

在弹出的视图控制器中,只需更改 backButton 标题,如下所示

- (void)someMethod
{
    CustomBackNavigationController *customBackNavigationController = (CustomBackNavigationController *) self.navigationController;

    [customBackNavigationController.backButton setTitle:@"Chats (1)"];
}
Run Code Online (Sandbox Code Playgroud)

就是这样 !