2011-06-27 58 views
0

我目前正試圖產卵了同樣的觀點的一個新的實例 - 使用下面的代碼:產卵場同樣的觀點的新實例,使用一個UINavigationController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    InventoryController *inventoryController = [[InventoryController alloc] initWithNibName:@"InventoryView" bundle:nil]; 

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self]; 
    [navigationController pushViewController:inventoryController animated:YES]; 

    [inventoryController release]; 
    [navigationController release]; 
} 

問題是,它不工作.. 。

我沒有收到任何錯誤或任何 - 它只是沒有做任何事情。

任何想法?

+1

似乎沒有保留navigationContoller。 – PengOne

回答

2

@PengOne有正確的...你正在創建一個導航控制器,然後釋放它,並沒有什麼可以防止它被釋放。此外,您尚未將導航控制器的視圖添加到窗口中,並且您尚未將導航控制器設置爲窗口的根視圖控制器,因此無法看到此特定導航堆棧中控制器控制的視圖無法顯示。

試試這個:在Xcode中創建一個基於導航的項目。您不需要添加任何代碼 - 只需創建該項目,以便查看提供的代碼即可。您將看到應用程序委託具有用於存儲導航控制器的retain屬性,並且導航控制器被設置爲窗口的根視圖控制器。

+0

好吧,這是有道理的,但在我的特殊情況下,我不希望它完整的項目,只是其中一個UITabBarController的意見... – xil3

+0

這很好,它不一定是保留導航控制器的應用程序委託,但* somebody *有掛在它上面或將被釋放。例如,您可以[將其添加到標籤欄控制器的控制器陣列](http://tinyurl.com/3mb7zdn),在這種情況下,您的導航控制器由陣列保留,然後由選項卡保留酒吧控制器。 – Caleb

1

如果您當前的控制器已經UINavigationController的層次結構的一部分,那麼你一定不能創建一個新的導航控制器 - 使用現有的一個,而不是(請注意,每個UIViewController的有其父UINavigationViewController參考,如果它存在):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    InventoryController *inventoryController = [[InventoryController alloc] initWithNibName:@"InventoryView" bundle:nil]; 

    [self.navigationController pushViewController:inventoryController animated:YES]; 

    [inventoryController release]; 
} 
+0

我沒有一個現有的:/ - 我認爲我可以創建一個動態的,我需要做的,但我想我需要保持它以某種方式.. – xil3

相關問題