(这应该很简单。但它已经让我发疯了好几个小时。)
我只是想从它的 UIView 内部调用一个 ViewController 方法。
myViewController 声明并创建一个 UIView:
myUIView = [[viewCreator alloc] init…];
我的 myViewController 也有一个方法:
-(void)inABottle{
NSLog(@"Hello.");
}
在 UIView 内部,创建了一个 UIButton。这个按钮有一个方法的“选择器”——在 UIView 中——然后尝试调用 ViewController 中的“inABottle”方法。在 UIView 内部:
...
[myButton addTarget:self action:@selector(isPressed) forControlEvents:UIControlEventTouchUpInside];
-(void)isPressed{
[myViewController inABottle];// <<< This is where I have spent my day.
}
(ViewController 头文件是 UIView 中的 #import 。)
非常感谢一些帮助。当然这应该很简单!
最佳答案
这就是协议(protocol)和委托(delegate)的用途。想想如何UITableView
处理这个问题。
@class MyView;
@protocol MyViewDelegate
- (void)myViewIsInABottle:(MyView *)view;
@end
@interface MyView : UIView
@property (weak) id<MyViewDelegate> delegate;
@end
@implementation MyView
-(void)isPressed{
[self.delegate myViewIsInABottle:self];
}
...
@end
关于iphone - 从 UIView 调用父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565912/