我知道我可以从视图控制器本身设置自定义后退按钮,例如:
- (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本身子类化,并将它的nab bar left按钮设置为此自定义按钮吗?
答案 0 :(得分:2)
正确的方法是使用UIAppearance
它提供UIBarButtonItem
上的方法,例如
- (void)setBackButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics
和
- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
答案 1 :(得分:1)
没有。最好有一个自定义的UIViewController来处理这种行为。