objective-c - 从 subview 中的 UIButton 调用 UIViewController 中的方法

标签 objective-c inheritance uibutton protocols

仍在学习 Objective C 并确保结构正确。

我有一个带有 UIViewController 的 iOS 应用程序,它有一个名为“doSomething”的已定义方法。在我的 View Controller 中,我有一个 View ,在该 View 中,我以编程方式创建了许多 UIButton(参见下面的一个按钮示例)。

enter image description here

现在,当我按下按钮时,我想调用我的方法“doSomething”。我目前的做法是这样的:

[myButton addTarget:nil 
             action:@selector(doSomething:)
     forControlEvents:UIControlEventTouchUpInside];

因为我的目标是 nil 它沿着响应者链上升,直到它找到一个名为“doSomething”的方法。它有效,但感觉不太对。

我已经开始研究使用@protocol,但并没有真正理解它。我一直在看一些教程,但对我来说还不够清楚。我使用过类似 TableView Controller 的协议(protocol),但定义一个对我来说是新的。

是否可以获得针对此特定案例的示例?

谢谢!

最佳答案

当您的目标传递到 View Controller 时,将在该对象上调用该方法。

编辑:

[myButton addTarget:controller 
             action:@selector(doSomething:)
     forControlEvents:UIControlEventTouchUpInside];

假设您有一个名为 controller 的变量,它是您的 UIViewController。如果您没有对 Controller 的引用,则只需将一个传递给您的 View 即可。

编辑2:

查看界面:

@property (assign) UIViewController* controller;

查看实现:

@synthesize controller;

Controller :

- (void) viewDidLoad {
    [super viewDidLoad];
    someView.controller = self;
}

关于objective-c - 从 subview 中的 UIButton 调用 UIViewController 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6119071/

相关文章:

c++ - 使用来自另一个类实例的函数指针调用成员函数

ios - 自定义 uitableviewcell 中的交互式流行手势识别器阻止按钮 touchupinside 事件

iOS:后台定位应用耗电过多

android - 使用多个基类时出现链接错误

iphone - viewDidAppear 高度在 iPhone 5 中为 656

Python 子类化 - 如何更新另一个类属性使用的类属性

iPhone SDK - UIButton 在自定义 View 中不起作用

ios - 将收件人显示为 UIButton

ios - NSOperationQueue 是否在运行时自动保留?

带有 plist 返回的 iOS 7 arrayWithContentsOfFile 导致类型无效