从不同的 class Swift 访问 uibutton 操作

Accessing uibutton action from a different class Swift

我有一个从两个自定义单元格 xib 文件加载的 UITableView。 第二个包含 UIButton.

但是因为我已经为 xib 添加了自定义 class - 它有自己的操作和功能,我无法从 ViewController.

访问

我的目标是在表格视图中加载自定义单元格时对 UIButton 应用一些操作。

我的函数在 ViewController 中定义(因为所有变量都在那里),我的 UIButton 操作在 xib 的自定义 class 中定义。

如何将一个连接到另一个?

谢谢

写一个委托方法。这将连接您的 ViewController 和自定义 Class。您已经尝试过什么?

您只需发布通知即可实现。

NSNotificationCenter.defaultCenter().postNotificationName("buttonClickedNotification", object: nil)

Post 此通知来自自定义 class 中的按钮方法。您还可以使用对象参数传递任何数据(此处为 nil)。

并观察 viewController 中的通知。

NSNotificationCenter.defaultCenter().addObserver(self, selector: "buttonClicked:", name: "buttonClickedNotification", object: nil)

并在 viewController 中实现 buttonClicked() 方法。

func buttonClicked(data: NSNotification)
{
   //If any data is passed get it using
   let receivedData:NSDictionary = data.object as! NSDictionary   //If data is of NSDictionary type.
}

这是swift

中的解决方案

如果你想在另一个 class 中发生事件时在另一个 class 中执行操作,那么你必须在你的代码中使用 Protocols,这样你就可以执行另一个 class.

中的动作

例如

在 class 接口之前像这样声明你的协议

protocol MyDelegateClass {
    func btnAction()
}

像这样在 class 的界面中定义您的协议

var MyDelegateClass! = nil

现在在你的按钮操作上触发这样的协议

 @IBAction func btnProtocolAction(sender: AnyObject) {
    [delegate btnAction];
}

现在像这样在 class 中包含协议

class myActionClass: UIViewController, PopUpViewDelegate {

现在像这样将协议分配给 MyDelegateClass 对象

myProtocolObject.delegate=self

同时定义您在 MyDelegateClass 中声明的 class,如

func btnAction() {
  print(@"This method will triggered");
}

希望对您有所帮助。