1

我想要一个更优雅的解决方案来更改应用程序导航栏的后退按钮。我看到的所有答案都只谈论自定义一个按钮,然后向每个视图控制器添加至少一行代码以显示新按钮。

我有一个类别,我可以在其中修改导航栏的背景和标题。它是 的一个类别UINavigationBarwillMoveToWindow:每次在导航控制器上推送新视图时,类别调用调用方法。

因此,创建新按钮的代码如下所示:

- (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 类上编写代码。我只是讨厌重复,因为维护这样的代码很糟糕。

提前致谢。

4

0 回答 0