回答

13

下面是創建一個自定義leftBarButtonItem一個例子:

UIImage *buttonImage = [UIImage imageNamed:@"backbutton.png"]; 
UIButton *aButton = [UIbutton buttonWithType:UIButtonTypeCustom]; 
[aButton setImage:buttonImage forState:UIControlStateNormal]; 
aButton.frame = CGRectMake(0.0,0.0,buttonImage.size.width,buttonImage.size.height); 
[aButton addTarget:self action:@selector(aSelector) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton]; 
self.navigationItem.leftButtonItem = backButton; 

希望它可以幫助...

編輯:

嘗試......

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"yourimage.jpg"] style:UIBarButtonItemStyleBordered target:self action:@selector(aSelector)]; 
self.navigationItem.leftBarButtonItem = backButton; 

我不記得按鈕是什麼類型的按鈕,嘗試將默認樣式更改爲其他。祝你好運!

+0

謝謝,我會用這個,如果有沒有其他方式。但我希望使它更加靈活(當它僅取決於backBarButtonItem的圖像和樣式而不依賴於圖像資源時) – Gargo

+0

我已編輯答案 – karse23

+0

第二個示例更糟,因爲sdk doesn'允許一次爲該按鈕設置圖像和標題。所以我應該爲所有的標籤製作不同的圖像。你想給我建議嗎? – Gargo

0

只需創建一個自定義barbuttonitem並使用類似於後退按鈕項的圖片對其進行自定義。 您可以從導航堆棧中的視圖控制器獲取文本。

然後把手水龍頭,以實現所需效果

+1

你可以把這裏更多具體的例子? – Gargo

0

您可以將您的自定義視圖作爲欄按鈕到您的導航控制器,是這樣的:對於更詳細的解釋

UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithCustomView:yourCustomizedControl]; 
[yourCustomizedControl release]; 

self.navigationItem.leftBarButtonItem = customItem; 
[customItem release]; 

檢查this Apple documentation,如果你想。

+0

正如我理解你我需要更改backBarButtonItem標題,然後我需要將其轉換爲UIView並將其分配給一個leftBarButtonItem。但是如何? – Gargo

+0

我會做的是創建一個簡單的UIButton,按照我希望的樣子自定義它,我的意思是給它一個背景圖像,一個標題等等。您可以找到一個類似於backBarButtonItem的圖像並分配這個到您新創建的UIButton。然後爲這個UIButton分配一個目標動作,以便它在你點擊時做你想做的事情。最後,將這個UIButton分配給你的nav的leftBarButton。控制器如上所述。 – aslisabanci

+0

現在我認爲最好刪除leftBarButtonItem並將其函數放入viewWillDisapear – Gargo

0

這裏是一個黑客添加回狀按鈕:

UINavigationItem* backNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Back"]; 
[_navigationBar pushNavigationItem:backNavigationItem animated:NO]; 
[backNavigationItem release]; 

您可以添加更多的項目(例如如標題,右鍵)這樣說:

UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"]; 
navigationItem.rightBarButtonItem = // Some UIBarButtonItem 
[_navigationBar pushNavigationItem:navigationItem animated:NO]; 
[navigationItem release]; 
+0

它會被應用程序商店接受嗎? – Gargo

+0

我從來沒有因爲這個拒絕 – willy

+0

它看起來像這個解決方案使用「自定義」UINavigationBar('_navigationBar = [[UINavigationBar分配] initWithFrame:...]; [self.view addSubview:_navigationBar]; _navigationBar.items = ...; _navigationBar.delegate = self')而不是'self.navigationController.navigationBar'。你需要適當地實現UINavigatonBarDelegate。 –