2010-10-10 78 views

回答

2

您需要更改默認的返回按鈕,在viewDidLoad

- (void) viewDidLoad 
{ 
    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" 
              style:UIBarButtonItemStyleBordered 
              target:self 
              action:@selector(handleBack:)] autorelease]; 
} 

,當然還有你在你的方法彈出控制器:

- (void) handleBack:(id)sender 
{ 
    // ... your code ! 

    [self.navigationController popViewControllerAnimated:YES]; 
} 
+1

不要忘記釋放該按鈕項目。否則,你在泄漏它。 – 2010-10-10 18:23:09

+0

Thx。是否有可能將按鈕設置回箭頭形狀? – Dopamine 2010-10-10 19:20:15

+0

-1,這會泄漏。像這樣創建它: 'UIBarButtonItem * button = [[UIBarButtonItem alloc] initWithTitle:@「Back」style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack :)];',像這樣設置:'self.navigationItem。 leftBarButtonItem =按鈕;'和**記得釋放它,''[按鈕釋放]'。 – Emil 2010-10-10 20:43:21

2

你應該嘗試其他UINavigationBarDelegate代表方法,–navigationBar:shouldPopItem:,並在做任何你需要做的事情後返回YES。在事情發生之前,「應該」調用委託方法。在發生之後調用「方法」。

您調用的方法不適用於後退按鈕。後退按鈕將「彈出」視圖控制器。相反(你使用的是)「推」一個視圖控制器。推送將新的視圖控制器添加到堆棧。彈出窗口從堆棧中刪除視圖控制器。

此外,請確保符合UINavigationBarDelegate。如果您使用的委託方法沒有發生任何事情,則會發生錯誤。 AFAIK如果您使用UINavigationController,代表應自動設置。 「

+0

謝謝!我有一個符合委託的UINavigationController,但沒有一個委託方法適用於我的應用程序。這很奇怪。 – Dopamine 2010-10-10 19:18:45

+0

然後要做的第一件事是找出爲什麼你的委託方法沒有被調用。複製並粘貼文檔中的方法名稱。在更簡單的應用程序中使用委託方法來查看它們的工作方式。查看你的代碼並閱讀如何讓代表工作。 – 2010-10-10 23:19:00

0

」還試了委託:......但沒有任何反應。「 首先要做的是在你懷疑沒有被調用的函數內部設置一個斷點。只需點擊xcode中代碼的左側即可設置斷點。

相關問題