簡體   English   中英

帶有自定義后退按鈕的UINavigationController子類

[英]UINavigationController subclass with custom back button

我知道我可以從視圖控制器本身設置自定義后退按鈕,例如:

- (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左鍵設置為此自定義按鈕嗎?

正確的方法是使用UIAppearance

它提供了UIBarButtonItem方法,例如

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

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

不。最好有一個自定義的UIViewController來處理這種行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM