iphone - 从 UIView 调用父方法

标签 iphone ios xcode ios5

(这应该很简单。但它已经让我发疯了好几个小时。)
我只是想从它的 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/

相关文章:

iphone - NSData 到 NSString 被截断 - iPhone

iphone - 在 iPhone 中实现静态库

ios - 将 UITableView 与不同的 View 模型类型重用

c++ - 如何在IOS中使用fstream读取XML文件

Xcode,在单步执行框架时无法查看变量,该框架是在同一工作区中构建和链接的

iphone - 免费下载是否可以增加付费排名?

iphone - 应用内购买恢复按钮替代放置

ios - 印象笔记 API : How to upload a note with pure ENML instead of plain text

objective-c - UIButton 作为 MKAnnotationView 中的 subview 不起作用

xcode - 谷歌测试和 XCode 4.6