我正在开发一款带有购物车的应用。当我在购物车中添加产品时,我的按钮会以模态方式切换到表格视图控制器。然后,当我选择一行时,应取消模态视图控制器。我尝试使用我的委托来实现这一点。这是我的代码:
(省略无关代码)
ItemsTableViewController(可供选择的产品列表)
//the header file
@class ItemsTableViewController;
@protocol ItemsTableViewControllerDelegate <NSObject>
- (void) itemsTableViewController: (ItemsTableViewController *)sender
didSelectProduct: (Product *) aProduct;
@end
@interface ItemsTableViewController : CoreDataTableViewController
@property (nonatomic, strong) UIManagedDocument *itemDatabase;
@property (nonatomic, weak) id <ItemsTableViewControllerDelegate> delegate;
@end
//来自实现的片段
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
Product *item = [self.fetchedResultsController objectAtIndexPath:indexPath];
[self.delegate itemsTableViewController:self didSelectProduct:item];
NSLog(@"DID SELECT ROW AT index %d with name %@", indexPath.row, item.name);
}
//这是我的购物车,ItemsTableViewController委托
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"Show Products List"]){
ItemsTableViewController *itemsTVC = (ItemsTableViewController *)segue.destinationViewController;
itemsTVC.delegate = self;
}
}
- (void) itemsTableViewController:(ItemsTableViewController *)sender didSelectProduct:(Product *)aProduct{
//adds the product in the shopping cart
[self.shoppingCart addObject:aProduct];
[self.products reloadData];
[self dismissModalViewControllerAnimated:YES];
NSLog(@"from the delegate got product %@", aProduct.name);
}
答案 0 :(得分:1)
您的segue的目的地是UINavigationController,而不是ItemsTableViewController。也许您将ItemsTableViewController放在故事板上的UINavigationController中。试试这个:
UINavigationController *navController = segue.destinationViewController;
ItemsTableViewController *itemsTVC = (ItemsTableViewController *)navController.topViewController;
itemsTVC.delegate = self;