Установить делегата для родительского контроллера представления - PullRequest
2 голосов
/ 30 мая 2011

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

В h-файле моего третьего вида контроллера у меня есть это:

@protocol AddSudokusViewControllerDelegate

- (void)saveSudoku:(Sudoku *)sudoku;

@end

@interface [...]

    id<AddSudokusViewControllerDelegate> delegate;

[...]

@property (nonatomic, retain) id<AddSudokusViewControllerDelegate> delegate;

Затем я синтезирую его в файле .m.

В моем первом контроллере вида у меня есть (.h):

@interface SudokusViewController : UITableViewController <AddSudokusViewControllerDelegate>{
[...]
}
- (void)saveSudoku:(Sudoku *)sudoku;

Пока все хорошо, я думаю. Теперь я хочу установить делегат третьего контроллера представления первым при создании его во втором контроллере. Я думал, что смогу сделать это так, но это не работает.

sudokuDetailViewController = [[SudokuDetailViewController alloc] init];
[sudokuDetailViewController setDelegate:[[self navigationController] parentViewController]];

[[self navigationController] pushViewController:sudokuDetailViewController animated:YES];

Правильно ли я делаю это или есть другой подход, когда у вас есть три таких контроллера?

С наилучшими пожеланиями Линус

1 Ответ

12 голосов
/ 30 мая 2011

Попробуйте это,

sudokuDetailViewController.delegate = [self.navigationController.viewControllers objectAtIndex:0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...