2014-01-21 59 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

相关问题