2012-05-15 14 views
0

我真的不知道如何以最少和最清晰的話來表達這個問題。但我會盡我所能。委託給導航控制器內部的SecondViewController Modially

我有一個類ShoppingCartVC,我想向它添加產品。所以我以模態方式呈現CategoriesVC。當我在tableView行中選擇一個類別時,它會延伸到包含該類別中所有產品的ProductsVC。所以現在我可以選擇一種產品。但是,如何將所選對象發回ShoppingCartVC?在使用委派之前,我能夠成功實現這一目標,但是那時我沒有CategoriesVC。我在繼續使用之前直接繼續使用ProductsVC,我可以將ShoppingCartVC(提交VC)設置爲ProductsVC的代理,並在選擇產品時將其解除。

但是現在由於ProductsVC在我的navigationController的VC層次結構中進一步是1VC,所以我不能這樣做。

我試過尋找NSNotification,但似乎並不是正確的解決方案。

我該如何解決這個問題?希望你能給我一些示例代碼。

+0

我試着搜索過去2天這個問題的整個stackoverflow已經但我找不到和回答.. :) – acecapades

+0

我有這個人一樣的問題(http://stackoverflow.com/questions/7955309/從嵌套到導航堆棧的委派),但沒有人回答他。 – acecapades

+0

我想你可以使用NSUserdefaults – Rohan

回答

1

也許我錯過了一些東西,但是從CategoriesVC到ProductsVC一起將引用傳遞給ShoppingCartVC會出現什麼問題?您應該能夠使用委託模式或發佈ShoppingCartVC正在偵聽的NSNotification來完成您正在尋找的內容。

另一種方法是創建一個購物車單件(包含購物車數組屬性的NSObject,用於保存每個產品),您可以從任何位置添加項目,然後當您的ShoppingCartVC出現時,更新您正在顯示的單車對象的當前內容。

+0

感謝您的提示。我會先嚐試NSNotification解決方案。那麼單身的事情。謝謝Joel – acecapades

1

我認爲委託模式是解決您的問題的最佳方案。

有在這種情況下3個ViewControllers:

  1. ShoppingCartViewController
  2. CategoryViewController
  3. ProductViewController

ShoppingCartViewController得到類別從CategoryViewController。

ShoppingCartViewController從ProductViewController獲取產品。

解決方案:

  • 創建協議CategoryViewControllerDelegateProductViewControllerDelegate

CategoryViewControllerDelegate

@protocol CategoryViewControllerDelegate <NSObject> 
... 
- (void)categoryViewController:(CategoryViewController *)categoryViewController didSelectCategoryAtIndex:(int)index; 
... 
@end 

ProductViewControllerDelegate

@protocol ProductViewControllerDelegate <NSObject> 
... 
- (void)productViewController:(ProductViewController *)productViewController didSelectCategoryAtIndex:(int)index; 
... 
@end 
  • 在ShoppingCartViewController實施方案,並顯示的UINavigationController與CategoryViewController模式爲rootViewController

  • categoryViewController:didSelectCategoryAtIndex:中獲取所選類別並將productViewController推送至navigationController。

推productViewController到navigationController

ProductViewController *productViewController = [ProductViewController new]; 
productViewController.delegate = self; 
[categoryViewController.navigationViewController pushViewController:productViewController animated:YES]; 

有你在ShoppingCartViewController兩個類別和產品。