Мой делегат не работает - PullRequest
0 голосов
/ 17 февраля 2012

Я работаю над приложением, в котором есть корзина для покупок.Когда я добавляю товар в свою корзину, моя кнопка модально переходит к контроллеру табличного представления.Затем, когда я выбираю строку, модальный контроллер представления должен быть отклонен.Я пытался реализовать это с помощью моего делегата.Вот мой код:

(нерелевантный код опущен)

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);
}

1 Ответ

1 голос
/ 17 февраля 2012

Назначением вашей очереди является UINavigationController, а не ItemsTableViewController. Возможно, вы поместили свой ItemsTableViewController в UINavigationController на вашей раскадровке. Попробуйте это:

UINavigationController *navController = segue.destinationViewController;
ItemsTableViewController *itemsTVC = (ItemsTableViewController *)navController.topViewController;
itemsTVC.delegate = self;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...