2014-01-21 99 views
1

我有一個UIViewController其中包含UIView Subclass,從我想要調用UIViewController包含它的方法定義的子類。我不想實例化一個視圖控制器的新實例,因爲它包含我在我嘗試調用的方法內需要的信息。這裏有一個圖試圖進一步澄清:如何從包含在視圖控制器中的視圖調用方法?

(UIViewController中)的MainView - >有方法updateView

(UIView的)子視圖--->的按鈕,播放動畫,並具有完成塊

我想調用UpdateView在完成塊

+6

這意味着您的視圖控制器應該將自己設置爲視圖創建視圖的委託,並且您的視圖應該將其作爲委託方法調用。 – Linuxios

+0

看看: http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c – Retterdesdialogs

+1

如果從MAINVIEW傳遞完成塊子視圖,然後在那個塊中調用該方法。 – santhu

回答

4

我想你可以設置你的子視圖的協議,可以通過您的視圖控制器來實現

你SubView.h

@class SubView; 

@protocol SubViewDelegate <NSObject> 
- (void)actionToPromoteToViewController: (NSString *)exampleString isSelected:(BOOL)exampleBool; 
@end 

然後,在你ViewController.h:

@interface MainViewController : UIViewController <SubViewDelegate> 

和你的ViewController.m,實現該方法。

- (void)actionToPromoteToViewController: (NSString *)exampleString isSelected:(BOOL)exampleBool{ 
    // Method Implementation 

} 
+0

代表肯定在這種情況下。 – 0xFADE

+0

明白了 - 感謝您的幫助。 – Nathan

0

對於「正確」的實現則需要參考您的UIView Subclass查看控制器:

@interface UIViewSubclass : UIView 
... 
@property UIViewControllerSubclass *viewController; 
@end 

然後設置這個viewController引用到你的視圖控制器並在完成塊中使用它。

如果你想有一個本地的解決方案(而不是延長UIViewSubclass財產)看看這個答案:https://stackoverflow.com/a/3732812/326017

相關問題