将委托设置为父视图控制器

时间:2011-05-30 09:02:33

标签: objective-c ios ios4

我的应用程序中有三个视图控制器被推送到导航控制器。当我在第三个视图控制器上时,我想向第一个视频控制器发送消息。我认为代表是这里的方式,但我无法正确设置。

在我的第三个视图控制器的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 个答案:

答案 0 :(得分:12)

试试这个,

sudokuDetailViewController.delegate = [self.navigationController.viewControllers objectAtIndex:0];