デリゲートパターンがあなたの問題の最良の解決策だと思います。
この場合、3 つの ViewController があります。
- ショッピングカートViewController
- カテゴリーViewController
- ProductViewController
ShoppingCartViewController は、CategoryViewController からカテゴリを取得します。
ShoppingCartViewController は ProductViewController から商品を取得します。
ソリューション:
- プロトコル
CategoryViewControllerDelegate
と を作成しますProductViewControllerDelegate
。
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 でカテゴリと製品の両方を取得します。