2011-05-30 150 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

相關問題