我的应用程序中有三个视图控制器被推送到导航控制器。当我在第三个视图控制器上时,我想向第一个视频控制器发送消息。我认为代表是这里的方式,但我无法正确设置。
在我的第三个视图控制器的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];
我是以正确的方式做这件事,还是有另外一种方法,当你有三个这样的控制器?
最诚挚的问候 莱纳斯
答案 0 :(得分:12)
试试这个,
sudokuDetailViewController.delegate = [self.navigationController.viewControllers objectAtIndex:0];