2009-12-31 28 views
1

這裏後我productscontroller.hself.navigationController是零添加子視圖

ProductListViewController *productListViewController; 
ProductGridViewController *productGridViewController; 
UIButton *flipIndicatorButton; 

,我在我的實現

ProductListViewController *listController = [[ProductListViewController alloc] initWithNibName:@"ProductListView" bundle:nil]; 
self.productListViewController = listController; 
self.productListViewController.CurrentSale = CurrentSale; 
[self.view insertSubview:listController.view atIndex:0]; 

但在添加列表和GridView作爲這樣一個子視圖時,我試圖從ProductListViewController.m像這樣推送detailview控制器

ProductDetailViewController *productDetailViewController = [[ProductDetailViewController alloc] init]; 

productDetailViewController.productIndexPath = indexPath; 

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

它只是doe s不工作,那麼我檢查[self.navigationController],它現在是零,現在如何處理這個問題。我準備提供更多的代碼和細節以便更清晰。謝謝

+0

如果您使用導航控制器,爲什麼要插入子視圖而不是將視圖推送到控制器? 另外,在插入子視圖之前導航控制器是否爲零? – 2009-12-31 02:33:46

+0

感謝Oren,不是它不是零,讓我告訴我的應用程序結構。 TabBarController -NavigationControler --TableViewController --- ProductController(self。navigationControll在此處不爲空) ---- ListViewController(self.navigationControll爲零) ---- GridViewControler(self.navigationControll爲零) ihope此圖使畫面變得清晰。 – Nnp 2009-12-31 02:58:31

+0

和我添加翻轉視圖按鈕作爲正確的按鈕項目,被添加。我可以翻轉視圖,但我不能推另一個視圖控件。 – Nnp 2009-12-31 03:00:01

回答

0

我發現這個問題的解決方法。 現在我正在做的是我傳遞父控制器的ref在這種情況下ProductsController和書面的方法來推動下一個視圖。在這之後現在我正在調用父方法來推下像這樣的下一個視圖 [parent pushNextview]; 到目前爲止,它工作正常,希望這是做我想做的好方法。

2

你在哪裏創建導航控制器?在某些時候(可能在應用程序委託),你必須有這樣的事情:

ProductsController *productsController = // create ProductsController 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:productsController]; 

然後添加navController的觀點作爲一個子視圖到你的窗口。

另一件事是,你似乎在一個屏幕上使用了太多的視圖控制器。 Apple建議每個屏幕只有一個。

+0

感謝bpapa,我只使用一個控制器每個屏幕,它只是我不能使視圖層次在這裏。 我有tabbar,並且我在我的Mainwindow.xib中創建了第一個tabbar作爲導航,並且我在BrandList控制器中創建了ProductController,這是我的第一個屏幕,而不是應用程序委託。這是清楚的。如果我不知道如何讓它更清楚。 – Nnp 2009-12-31 03:55:43

+0

我遵循這個例子創建子視圖(我做了同樣的事情,有小的變化)http://developer.apple.com/iphone/library/samplecode/TheElements/index.html,希望這可以幫助 – Nnp 2010-01-02 18:39:42

0

我遇到了類似的問題昨天:

Tab Bar View - Table View - View

在表視圖控制器,我想推「詳細視圖」的控制器,但[self navigationController]nil在這裏。解決的辦法是去這個安排:

Tab Bar View - Navigation View - Table View - View

通過附加導航控制器,[self navigationController]表視圖控制器,現在的工作。

0

我剛剛發現爲什麼navigationController總是零。您的整個系列視圖應包含在UINavigationController中。這意味着您的層次結構中的第一個視圖必須是您的rootViewController。 bpapas代碼應該可以工作。

1

我最近有同樣的問題!我在視圖控制器的viewWillAppear:方法中「調用」([self.navigationController popViewControllerAnimated:YES])viewController。所以我只是刪除了這段代碼,並在viewDidAppear:方法中插入了相同的代碼,並且它工作正常!