簡體   English   中英

按下后退按鈕時UINavigationController不彈出視圖,但導航欄動畫

[英]UINavigationController not popping a view when back button pressed, but navigation bar animates

我正在創建一個非常簡單的示例應用程序,以顯示首選項如何與我正在使用的新應用程序一起使用。 這個過程非常簡單:在IB中創建一個UINavigationController,為它分配視圖控制器,它將成為根視圖控制器,並在調用didSelectRowAtIndexPath時將新的視圖控制器推送到導航控制器的堆棧上。

我已經閱讀了盡可能多的相關主題,但我找不到滿意的答案。

問題是,當按下后退按鈕時,導航控制器會返回動畫,但視圖本身不會改回,這意味着它不會彈出。

這是我用來將新視圖控制器推送到堆棧的代碼。 這是非常標准的。 我添加了NSLog以確保它只被擊中一次。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section != 0)
    return;

NSLog(@"didSelectRowAtIndexPath\n");

PrefsListTableViewController *prefsListTableViewController = [[PrefsListTableViewController alloc] initWithNibName:@"PrefsListTableViewController" bundle:nil];

[self.navigationController pushViewController:prefsListTableViewController animated:YES];
[prefsListTableViewController release];
}

要檢查是否在第二個視圖上點擊了viewWillDisappear調用,我將其添加到我的PrefsListTableViewController:

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
NSLog(@"ptvc viewWillDisappear");
}

這永遠不會受到打擊。

首先,我認為您不需要編寫任何代碼來處理后退按鈕,因為當您按下后退按鈕時,UINavigationController會自動彈出堆棧。 我可以通過一個示例應用程序來展示我正在做的事情,但樣本只是代碼。 代碼來自Erica Sadun的iPhone開發人員的食譜代碼,食譜11-11。 她的代碼在這里:

https://github.com/erica/iphone-3.0-cookbook-/tree/master/C11-Tables/11-Disclosure%20Chevrons

如果你查看她的代碼,就沒有.xib文件,所有內容都是在不需要編寫后退按鈕的情況下處理的。 視圖控制器被推入代碼中,並且看似沒有代碼而彈出。 我更喜歡使用.xib文件,所有內容應該以相同的方式工作,但事實並非如此。

其次,我在NSLog語句中說明實際上,根導航控制器有兩個視圖控制器。

2011-11-18 11:14:36.355 TableViewTest[58011:207] didSelectRowAtIndexPath
2011-11-18 11:14:36.358 TableViewTest[58011:207] ptvc viewWillAppear (
"<TableViewController: 0x8923d40>",
"<PrefsListTableViewController: 0x8927a20>"
)
2011-11-18 11:14:36.717 TableViewTest[58011:207] ptvc viewDidAppear (
"<TableViewController: 0x8923d40>",
"<PrefsListTableViewController: 0x8927a20>"
)

因此,您可以看到視圖控制器按正確順序推送。

這導致了一個問題:當按下后退按鈕時,為什么不會彈出PrefsListTableViewController? 如果有人需要更多信息,請告訴我。

你有擴展UINavigationController類嗎? 我做了並且遇到了同樣的問題。 顯然,根據蘋果文檔,你不應該擴展那個班級......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM