我认为委托模式是解决您问题的最佳方法。
在这种情况下有 3 个 ViewController:
- ShoppingCartViewController
- 类别视图控制器
- 产品视图控制器
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 中获得类别和产品。