我想要一个更优雅的解决方案来更改应用程序导航栏的后退按钮。我看到的所有答案都只谈论自定义一个按钮,然后向每个视图控制器添加至少一行代码以显示新按钮。
我有一个类别,我可以在其中修改导航栏的背景和标题。它是 的一个类别UINavigationBar
。willMoveToWindow:
每次在导航控制器上推送新视图时,类别调用调用方法。
因此,创建新按钮的代码如下所示:
- (void)applyCustomButton{
UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 26, 26)];
[backButton setImage:[UIImage imageNamed:@"arrow-left"] forState:UIControlStateNormal];
[backButton setShowsTouchWhenHighlighted:TRUE];
[backButton addTarget:self action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
[self.navigationItem setLeftBarButtonItem:barButtonItem];
}
这里的问题是在这里self.navigationItem
行不通。我不想让你对我尝试分类的所有事情感到厌烦,但该属性仅适用于视图控制器(我认为)?
您不必为上面的代码提供解决方案,也许您有更好的方法来自定义导航栏上的后退按钮,而不必在我拥有的每个 View Controller 类上编写代码。我只是讨厌重复,因为维护这样的代码很糟糕。
提前致谢。