0

この質問を可能な限り最小限の明確な言葉で表現する方法が本当にわかりません. しかし、私は最善を尽くします。

クラス ShoppingCartVC があり、それに製品を追加したいと考えています。だから私はモーダルに CategoriesVC を提示します。tableView 行でカテゴリを選択すると、そのカテゴリのすべての製品を含む ProductsVC に移動します。これで商品を選択できるようになりました。しかし、その選択したオブジェクトを ShoppingCartVC に送り返すにはどうすればよいでしょうか? 委任を使用する前にこれを正常に実装できましたが、それは CategoriesVC を持っていなかったときでした。ProductsVC に直接セグエするだけなので、セグエグする前に、ShoppingCartVC (プレゼンティング VC) を ProductsVC のデリゲートとして設定し、製品が選択されるたびにそれを却下することができます。

しかし今、ProductsVC は私のナビゲーション コントローラーの VC 階層のさらに 1VC であるため、それを行うことはできません。

NSNotification について検索してみましたが、それは正しい解決策ではないようです。

これを解決するにはどうすればよいですか?サンプルコードを教えていただければ幸いです。

4

2 に答える 2

1

デリゲートパターンがあなたの問題の最良の解決策だと思います。

この場合、3 つの ViewController があります。

  1. ショッピングカートViewController
  2. カテゴリーViewController
  3. 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 でカテゴリと製品の両方を取得します。

于 2012-05-15T06:50:31.613 に答える
1

何かが足りないのかもしれませんが、ShoppingCartVC への参照を CategoriesVC から ProductsVC に渡す際の問題は何ですか? デリゲート パターンを使用するか、ShoppingCartVC がリッスンしている NSNotification を投稿することで、探しているものを達成できるはずです。

もう 1 つの方法は、どこからでも商品を追加できるショッピング カート シングルトン (各商品を保持するショッピング カート配列プロパティを持つ NSObject) を作成し、ShoppingCartVC が表示されたら、カートの内容を更新することです。シングルトン オブジェクトの現在の内容で表示します。

于 2012-05-15T03:49:18.493 に答える