2011-06-16 71 views
0

我已經使用了下面提到的代碼,用於自定義左側指向後退按鈕,它工作正常.. 但幾天之後,它變回了矩形按鈕.. 誰能幫我把它恢復到原來的類型.... 謝謝...在導航條上添加自定義後退按鈕buttonWithTypw:101不起作用

UIButton *backButton = [UIButton buttonWithType:101]; 
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; 
[backButton setTitle:@"Back" forState:UIControlStateNormal]; 

UIBarButtonItem* newBackButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
graphSecondViewCtrl.navigationItem.leftBarButtonItem = newBackButton; 

回答

0

按鈕類型101未在SDK中定義,並且可能在任何OS升級時停止工作。

我會使用buttonWithType:UIButtonTypeCustom,然後添加一個圖像,通過調用自定義按鈕對象上的setImage:forState,爲您提供所需的外觀。

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[backButton setImage:[UIImage imageNamed:@"backBarButtonNormal.png"] forState:UIControlStateNormal]; 
[backButton setImage:[UIImage imageNamed:@"backBarButtonHighlighted.png"] forState:UIControlStateHighlighted]; 

// Rest of the code is the same. 

真正的問題是爲什麼你需要重新創建導航控制器自動給你的標準按鈕。確保你使用的工具,而不是對他們。

如果您需要跟蹤當視圖控制器被換進出,您可以將您的視圖控制器是導航控制器的這樣的委託:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[self navigationController] setDelegate:self]; 
} 

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

    if (viewController != self) 
     NSLog(@"We're going away..."); 
} 

- (void)viewDidUnload { 
    [super viewDidUnload]; 
    [[self navigationController] setDelegate:nil]; 
} 
+0

的事情是,我必須當按下後退按鈕時,在我的代碼中設置一些標籤。如果使用默認的後退按鈕,則無法完成此操作。我創建了這個自定義按鈕,以便頁面可以返回,我可以調用我的函數..是否有任何替代解決方案.. – 2011-06-16 08:47:52

+0

絕對! UINavigationController有一個委託,當顯示一個視圖控制器時會被通知。視圖控制器交換進出時,您可以根據需要實施委託並進行更新。 – 2011-06-16 08:51:40

+0

我發現代表fns willShowViewController和didShowViewController ..但我不知道如何使用它們。你可以幫我嗎..在我的導航視圖中有3個屏幕。兩個後退按鈕調用不同的backAction方法.. – 2011-06-16 12:00:11

0

按鈕類型101是無證。這不是蘋果公司同意維護的,所以它可以隨時改變。依靠這些東西是不正確的。您應該考慮帶圖片的custom按鈕,以確保它不會像現在這樣爲您打破。

相關問題