2011-05-30 103 views
2

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

在我的第三个视图控制器的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]; 

我这样做是正确的方式,还是有另一种方法,当你有三个这样的控制器?

问候 莱纳斯

回答

12

试试这个,

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

谢谢。很棒。 – Linus 2011-05-30 09:52:29

相关问题