2010-08-06 39 views
6

我有一個問題,我可以成功地從我的根視圖控制器(使用基於導航的應用程序使用核心數據模板)推新視圖控制器,但詳細視圖是根視圖控制器的獨立xib文件,不顯示後退導航按鈕。我確信我在IB中完成了所有正確的連接,並且其他一切都按預期工作。返回導航按鈕沒有顯示在推送的視圖控制器

RootViewController.h

@class ItemsViewController; 

@interface RootViewController : UITableViewController <NSFetchedResultsControllerDelegate> { 

IBOutlet ItemsViewController *itemsVC; 

} 

@property (nonatomic, retain) IBOutlet ItemsViewController *itemsVC; 

@end 

RootViewController.m

#import "ItemsViewController.h" 

@synthesize itemsVC; 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
// Pushes to ItemsViewController 

ItemsViewController *itemsViewController = [[ItemsViewController alloc] initWithNibName:@"ItemsViewController" bundle:[NSBundle mainBundle]]; 

[self.navigationController pushViewController:itemsViewController animated:YES]; 
[itemsViewController release]; 

} 

ItemsViewController是一個UITableViewController子類有自己的廈門國際銀行,也叫ItemsViewController。再次,它從RootViewController被推送,但後退按鈕不顯示like this.我的印象是它是使用導航控制器的「免費」功能。正如你所料,這是一個非常令人沮喪的障礙,我會很感激任何幫助。

+0

直到看到這篇文章,我有同樣的問題。這真是奇怪的默認行爲。如果沒有提供標題,爲什麼不只是「返回」? – 2010-08-09 01:23:07

+0

是的,或者Xcode中的某種錯誤或警告會很好。 – 2010-08-15 06:49:07

回答

14

您的ItemsViewController類是否在viewDidLoad方法中設置了title屬性?

您應該撥打[tableView deselectRowAtIndexPath:indexPath animated:YES]作爲tableView:didSelectRowAtIndexPath:的最後一行,以符合Apple的人機界面指南。

+0

我還沒有設置標題。它將來自從RVC進入的CD名稱屬性。是否需要爲後退按鈕設置標題? – 2010-08-06 04:08:20

+1

是的。但是你應該總是在導航欄上有一個標題。那怎麼樣:你是在'RootViewController'的'viewDidLoad'方法中設置'title'嗎?當根視圖的標題沒有設置時,我遇到了後退按鈕的問題。 – 2010-08-06 04:22:08

+1

對不起,我從桌子上拿起我的臉。在RVC中設置標題給了我後退按鈕。我想它在呈現之前需要填充。感謝提示,我不會很快忘記! – 2010-08-06 04:47:46

9

是的,確保你的RootViewController上有一個標題,如果沒有按鈕會出現。以編程方式設置標題;

self.navigationItem.title = @"Hello Der"; 
1

爲未來的讀者一些額外的信息:我就遇到了這個問題,而試圖重新填充應用負載的導航層次,所以我打電話setViewControllers:從應用程序委託的application:didFinishLaunchingWithOptions:方法中。而後面的按鈕沒有出現,我遇到了同樣的問題。

在我的情況下,在其viewDidLoad中設置根視圖控制器的導航項目標題不起作用,大概是因爲其他視圖先加載並將根標題視爲null。相反,在我調用setViewControllers之前,我在我的應用程序中設置了根視圖控制器的導航項目標題:didFinishLaunchingWithOptions:方法,並修復了它。

0

請嘗試下面的代碼片段。它適合我!

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Image.png"] forBarMetrics:UIBarMetricsDefault]; 

[self.navigationController.navigationBar bringSubviewToFront:[self.navigationController.navigationItem backBarButtonItem]]; 
0

這也可能發生,如果你是一個笨蛋,並錯誤地將視圖初始化爲模態而不是將視圖推送到導航控制器。

oops:[self presentModalViewController:navController animated:YES]; 意思是:[self.navigationController pushViewController:controller animated:YES];

相關問題