首先,我試圖用viewWillDisapper方法來管理它,但這對我來說還不夠詳細。他們是另一種解決方案嗎?如何找出在UINavigationBar中是否點擊後退按鈕?
也嘗試了委託:
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item
但沒有任何反應。
首先,我試圖用viewWillDisapper方法來管理它,但這對我來說還不夠詳細。他們是另一種解決方案嗎?如何找出在UINavigationBar中是否點擊後退按鈕?
也嘗試了委託:
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item
但沒有任何反應。
您需要更改默認的返回按鈕,在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];
}
你應該嘗試其他UINavigationBarDelegate
代表方法,–navigationBar:shouldPopItem:
,並在做任何你需要做的事情後返回YES
。在事情發生之前,「應該」調用委託方法。在發生之後調用「方法」。
您調用的方法不適用於後退按鈕。後退按鈕將「彈出」視圖控制器。相反(你使用的是)「推」一個視圖控制器。推送將新的視圖控制器添加到堆棧。彈出窗口從堆棧中刪除視圖控制器。
此外,請確保符合UINavigationBarDelegate
。如果您使用的委託方法沒有發生任何事情,則會發生錯誤。 AFAIK如果您使用UINavigationController
,代表應自動設置。 「
謝謝!我有一個符合委託的UINavigationController,但沒有一個委託方法適用於我的應用程序。這很奇怪。 – Dopamine 2010-10-10 19:18:45
然後要做的第一件事是找出爲什麼你的委託方法沒有被調用。複製並粘貼文檔中的方法名稱。在更簡單的應用程序中使用委託方法來查看它們的工作方式。查看你的代碼並閱讀如何讓代表工作。 – 2010-10-10 23:19:00
」還試了委託:......但沒有任何反應。「 首先要做的是在你懷疑沒有被調用的函數內部設置一個斷點。只需點擊xcode中代碼的左側即可設置斷點。
不要忘記釋放該按鈕項目。否則,你在泄漏它。 – 2010-10-10 18:23:09
Thx。是否有可能將按鈕設置回箭頭形狀? – Dopamine 2010-10-10 19:20:15
-1,這會泄漏。像這樣創建它: 'UIBarButtonItem * button = [[UIBarButtonItem alloc] initWithTitle:@「Back」style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack :)];',像這樣設置:'self.navigationItem。 leftBarButtonItem =按鈕;'和**記得釋放它,''[按鈕釋放]'。 – Emil 2010-10-10 20:43:21