2011-10-06 104 views
2

以我的ViewController我已經創建了包含一個按鈕和一羣其他元件的圖。當按下按鈕時,我想從父ViewController調用一個方法。我試過了:調用視圖控制器的方法從子視圖

[self.superview buttonPressedMethod]; 

但是,superview不是ViewController而是UIView。無論如何要做到這一點?

回答

1

這也正是目標/動作機制是什麼。使視圖控制器中的方法成爲IBAction。將視圖控制器設置爲按鈕的目標,並將該方法設置爲其操作。這應該是你需要做的一切。

+0

該按鈕是以編程方式創建的。 ViewController的目標是什麼? –

+1

視圖控制器沒有目標,它*是目標。你可以使用'-addTarget:action:forControlEvents:'設置按鈕的目標和動作。將視圖控制器指定爲目標,並將您要調用的方法指定爲操作。請注意,該方法必須具有適當的簽名。你讀過[文檔](http://developer.apple.com/library/IOS/#documentation/General/Conceptual/Devpedia-CocoaApp/TargetAction.html)嗎? – Caleb

+0

對不起,我很快寫了我的回覆。我明白,ViewController是我的目標。我的意思是如何以編程方式將ViewController設置爲目標?例如,我將self設置爲目標:** [forwardButton addTarget:self action:@selector(forwardButtonPressed)forControlEvents:UIControlEventTouchUpInside]; **我該如何使視圖控制器變爲? –

0
At ParentViewController.h 
-(void)ParentMethod; 

At ParentViewController.m 
-(IBAction)button:(id)sender { 
     [self ParentMethod]; 
} 

At IBAction of Play Button on child view controller do this: 
-(IBAction)ChildMethod:(id)sender { 
     ParentViewController *parent=self.parentViewController; 
     [parent ParentMethod]; 
} 
0

更好地在視圖控制器中創建委託並在子視圖中設置委託,所以當發生某些事情時根據它調用委託方法。

相關問題