Понимание пользовательских делегатов - PullRequest
1 голос
/ 23 июня 2011

Итак, у меня есть приложение, и в приложении есть tableView, у меня есть uinavigationbarbutton, который представляет модальное viewController.Когда пользователь нажимает кнопку перехода в модальном интерфейсе, я хочу, чтобы он отклонил модальное представление и получил некоторую информацию в модальном представлении.Я помещу эту информацию в tableView.Для этого я написал собственный делегат, но он не работает.Я включил свой код ниже.Спасибо за любую помощь.

TrackerMainViewController.h // tableView

#import "NewItemViewController.h"
@interface TrackerMainViewController : UITableViewController <UITableViewDelegate, DetailDelegate>

TrackerMainViewController.m

 -(void)finishedAddingFoodItemFromDetail:(NSDate *)date whatWasEaten:(NSString *)whatFood whichMeal:(NSString *)meal {
     NSLog(@"in delegate method here");
     [self.tableView reloadData];
     [self dismissModalViewControllerAnimated:YES];
}

NewItemViewController.h // модальное представление

@protocol DetailDelegate <NSObject>
-(void)finishedAddingFoodItemFromDetail:(NSDate *)date whatWasEaten:(NSString *)whatFood whichMeal:(NSString *)meal;
@end

@interface NewItemViewController : UIViewController {
     id <DetailDelegate> _delegate;
}
@property (nonatomic, retain) id <DetailDelegate> delegate;
@end

NewItemViewController.h

@implementation NewItemViewController
@synthesize delegate = _delegate;
//the go button in the modal view

- (IBAction)Go:(id)sender {
[self.delegate finishedAddingFoodItemFromDetail:[NSDate date] whatWasEaten:@"chicken" whichMeal:@"breakfast"];
}

Я помещаю журнал как в кнопку go, так и в реализацию делегата в табличном представлении, но вызывается только журнал go.

Спасибо

1 Ответ

3 голосов
/ 23 июня 2011

В коде, который вы разместили, вы не устанавливаете делегата.Вам нужно установить его аналогично этому detailView.delegate = self, в противном случае это nil.Вы можете отправлять сообщения на nil -объект без предупреждения и ошибки, ничего не произойдет.

...