iOS自定义后退按钮,无需在每个View Controller中调用方法

时间:2012-06-08 15:51:57

标签: ios cocoa-touch back-button objective-c-category

我想要一个更优雅的解决方案来更改应用程序导航栏的后退按钮。我看到的所有答案只谈到自定义一个按钮,然后向每个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类上编写代码。我只是讨厌重复,因为维护这样的代码很糟糕。

提前致谢。

0 个答案:

没有答案