我想要一个更优雅的解决方案来更改应用程序导航栏的后退按钮。我看到的所有答案只谈到自定义一个按钮,然后向每个View Controller添加至少一行代码,以便显示新按钮。
我有一个类别,我修改导航栏的背景和标题。这是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 Controllers(我认为)?
您不必为上面的代码提供解决方案,也许您有更好的方法来自定义导航栏上的后退按钮,而无需在我拥有的每个View Controller类上编写代码。我只是讨厌重复,因为维护这样的代码很糟糕。
提前致谢。