2011-06-10 41 views
0

我的RootViewController是一個UITableViewController。一個UINavigationController的編程方式添加:添加UIViewController到UINavigationController的問題

_navigationController = [[[UINavigationController alloc] initWithRootViewController:_rootViewController] autorelease]; 
[self.window addSubview:_navigationController.view]; 
[self.window makeKeyAndVisible]; 

在當選擇連續DetailViewController應加載的RootViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Switch to detail"); 
    CCouchDBDocument *selectedObject = [self.contentsList objectAtIndex:indexPath.row]; 
    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil]; 
    [self.view addSubview:detailViewController.view]; 
    [detailViewController setDetailItem: selectedObject]; 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
} 

沒有addSubView沒有任何反應在屏幕上。我之前見過的所有例子都只使用pushViewController。並且,加載DetailView大約需要4秒鐘。這太長了(目前它是空的,只有一個標籤)。當我嘗試設置navigationTitle(self.title = @「Hello」;)時,標題與RootViewController保持一致,所以導航控制器必須有錯誤。

我試圖把所有東西放在AppDelegate中,並使用switchView方法。問題是setDetailItem的調用,如果我使用switch方法,則無法調用它。

將RootViewController中的DetailView加載到導航堆棧中以及可能更多來自DetailViewController的正確方法是什麼?

更新 我從頭再次開始使用基於Window的應用程序。添加一個UITableViewController作爲「RootViewController」,並使用AppDelegate中的UINavigationController對其進行初始化(在XIB中完全沒有)。當我嘗試設置self.navigationController.title = @「Test」;在ViewDidLoad中,沒有任何反應。

有什麼不對?

回答

1

當使用self.title使用UINavigationController顯示DetailView時,您不會設置DetailView的標題,您需要在DetailView初始值設定項中設置UINavigationItem title屬性。

例如在初始化的DetailView -

self.navigationItem.title = @"Hello"; 

你說的沒錯,你不應該需要的detailViewController視圖添加爲當前視圖的子視圖 - 你應該只需要pushViewController電話。我不確定它爲什麼沒有出現。

顯而易見的問題是在nib中連接的所有東西都可以,DetailView初始化程序是做什麼的?

+0

不,也沒有改變。那裏有些嚴重錯誤。 – Patrick 2011-06-10 18:08:14

+0

它是self.navigationItem.title你需要改變我認爲,_not_ self.navigationController.title - 同樣,如果你是以編程方式構建視圖,你可能需要在loadView中設置它(我使用nibs並在initWithNibName中設置它: ) – 2011-06-15 09:58:25

+0

還有一些其他問題。從頭開始,現在很好。謝謝! – Patrick 2011-06-15 20:53:10

相關問題