2013-07-03 186 views
3

我想顯示自定義導航欄後退按鈕。我只想顯示它的圖像。我想在整個應用程序中使用此按鈕也不想在每個文件中創建此按鈕。我怎麼能夠??只有圖像的自定義導航欄後退按鈕

這裏是我的代碼:

// Set the custom back button 
     UIImage *buttonImage = [UIImage imageNamed:@"back_arrow.png"]; 

     //create the button and assign the image 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [button setImage:buttonImage forState:UIControlStateNormal]; 

     //set the frame of the button to the size of the image (see note below) 
     button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 

     [button addTarget:self action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside]; 

     //create a UIBarButtonItem with the button as a custom view 
     UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
     self.navigationItem.leftBarButtonItem = customBarItem; 

但這僅顯示當前頁面上。

另一個代碼:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"back_arrow.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

使用這個代碼返回按鈕圖像是表示整個應用程序。但文字「返回」也顯示。我怎麼解決這個問題。

在此先感謝。

+0

您是否試過我的解決方案了? – Fogmeister

+0

我不想在每個文件中再次編寫代碼並再次創建操作方法。對不起,哥們。感謝您的建議..:P @Fogmeister – shivam

+0

所以,你不能自己工作,但不會接受我的答案,即使它只需要一行代碼來設置?這非常明智。 – Fogmeister

回答

11

我在過去使用過一個類來做到這一點。

在UIBarButtonItem上創建一個名爲+ projectButtons(或其他)的類別。

然後你就可以有一個函數像...

+ (UIBarButtonItem)backArrowButtonWithTarget:(id)target action:(SEL)action 
{ 
    UIImage *buttonImage = [UIImage imageNamed:@"back_arrow.png"]; 

    //create the button and assign the image 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:buttonImage forState:UIControlStateNormal]; 

    //set the frame of the button to the size of the image (see note below) 
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 

    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; 

    //create a UIBarButtonItem with the button as a custom view 
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
    return customBarItem; 
} 

然後把它添加到你喜歡這樣的導航欄...

self.navigationItem.leftBarButtonItem = [UIBarButtonItem backArrowButtonWithTarget:self action:@selector(popViewControllerAnimated:)]; 

這意味着你只需要一行代碼創建它,但是你仍然可以在每個你使用它的VC中獲得目標和動作的定製。如果你決定改變按鈕的外觀,那麼它都在一個地方完成。

+1

我已經嘗試了所有可以在此處找到的「後退按鈕圖像」解決方案。這個適用於iOS 4到6的所有版本,沒有太多的開銷。謝謝! –

相關問題