2012-12-14 123 views
0

我正在使用具有主視圖和詳細視圖的分割視圖控制器。我在我的詳細信息視圖控制器上有一個視圖,它包含一個用戶輸入字段,該字段應調用主視圖控制器上的一個方法來更新數組。我無法建立雙方之間的溝通。我試圖簡單地調用使用[masterViewController updateCalcs]這種方法,但似乎沒有工作,錯誤出與下面:從詳細視圖更新主視圖

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- 
[UINavigationController updateCalcs]: unrecognized selector sent to instance 0xb08d130' 

誰能幫我出一些示例代碼或源準確解釋如何從另一個視圖調用一個方法?

+0

它看起來像你打電話給'updateCalcs' NavigationController,我認爲masterViewController應該是'[self.navigationController.viewControllers objectAtIndex:0] .visibleViewController' – mkral

回答

0

最好的做法是使用代表。在您的detailview.h補充:

@protocol TestDelegate <NSObject> 
-(void)doSomeThing; 
@end 

@property (nonatomic, weak) id <TestDelegate> delegate; 

在detailview.m:在的DetailView創建

[self.delegate doSomeThing]; 

在masterview.m附加:

detailView.delegate = self; 

在masterview.h添加代表如:

@interface MasterView : UIViewController <TestDelegate> { 
+0

我正在考慮使用通知消息。你認爲這不是解決問題的最佳方式嗎? –

+0

我想代表是更好的編程實踐,請參閱http://stackoverflow.com/questions/2232694/delegates-vs-notifications-in-iphoneos更多信息 –

+0

我認爲你應該使用MVC並將你的數組存儲在模型中,在詳細視圖控制器中更新模型,然後添加一個通知觀察者,以便在主視圖上更改該數組的時間。 – mkral

相關問題