Я думаю, что я слежу за тем, как работает делегация, here's the tutorial I followed, но я что-то испортил. Я ожидаю, что мой делегат NSLog, но это не так. Может ли кто-нибудь узнать, что мне не хватает или что-то не так?Выполнение делегирования
Мой MainViewController.h:
@interface MainViewController : UITableViewController <AddClassDelegate>
MainViewController.m:
- (void)cancelAddingClass {
NSLog(@"Canceled Yo");
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
/*
When a row is selected, the segue creates the detail view controller as the destination.
Set the detail view controller's detail item to the item associated with the selected row.
*/
if ([[segue identifier] isEqualToString:@"addClassSegue"]) {
UINavigationController *nc = (UINavigationController *)segue.destinationViewController;
AddClassViewController *addClassVC = (AddClassViewController *)[nc.viewControllers objectAtIndex:0];
addClassVC.delegate = self;
}
Мой модальное вид контроллера AddClassViewController.h:
@protocol AddClassDelegate <NSObject>
- (void)cancelAddingClass;
@end
@interface AddClassViewController : UITableViewController
@property (weak, nonatomic) id<AddClassDelegate> delegate;
- (IBAction)cancelButtonPressed:(id)sender;
AddClassViewController.m:
@synthesize delegate;
- (IBAction)cancelButtonPressed:(id)sender {
[self.delegate cancelAddingClass];
}
cancelButtonPressed:
подключен к кнопке модального зрения отменит в раскадровке.
это должно сработать ... попробуйте делегировать объект NSLog перед 'self.delegate cancelAddingClass' и посмотреть, не является ли оно нулевым. – Shubhank
Хорошо, так что это нехорошо. Мой делегат = null. – tazboy
Я думаю, что это может быть из-за слабой ссылки в объявлении делегата ... попробуйте изменить его на сильный – Shubhank