1

我知道我可以从视图控制器本身设置自定义后退按钮,例如:

- (void)setBackButton
{
    UINavigationBar* navBar = self.navigationController.navigationBar;
    UIButton* backButton = [navBar backButtonWith:[UIImage imageNamed:@"navigationBarBackButton.png"] 
                                        highlight:nil 
                                     leftCapWidth:14.0];

    [backButton addTarget:self action:@selector(backButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
}

- (void)backButtonTapped:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}  

问题是我需要为我所有的视图控制器做这件事......
一种解决方案是把这段代码放在一些 BasicViewController 中,我所有的视图控制器都会继承它。

但我的问题是我可以继承 UINavigationCotroller 本身并将它的导航栏左按钮设置为这个自定义按钮吗?

4

2 回答 2

2

正确的方法是使用UIAppearance

它提供了UIBarButtonItem诸如

- (void)setBackButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics

- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics

于 2012-06-07T15:10:51.873 回答
1

不,最好有一个自定义 UIViewController 来处理这种行为。

于 2012-06-07T15:09:44.487 回答