从另一个类Swift访问uibutton动作

时间:2015-08-26 12:01:01

标签: ios swift uitableview class custom-cell

我有两个自定义单元while(self.timer.valid && [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]); 文件加载的UITableView。 第二个包含xib

但是因为我已经添加了UIButton的自定义类 - 它有自己的操作和功能,我无法从xib访问。

我的目标是在自定义单元格加载到tableview中时对ViewController应用一些操作。

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

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

谢谢

3 个答案:

答案 0 :(得分:3)

以下是swift中的解决方案

如果要在另一个类中发生事件时要在另一个类中执行操作,则必须在代码中使用Protocols,以便可以在另一个类中执行操作。

例如

在类接口

之前声明你的协议
protocol MyDelegateClass {
    func btnAction()
}

在类的界面中定义您的协议,如

var MyDelegateClass! = nil

现在按钮操作会触发像这样的协议

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

现在在类中包含协议

class myActionClass: UIViewController, PopUpViewDelegate {

现在将协议分配给MyDelegateClass对象,如此

myProtocolObject.delegate=self

还要定义您在MyDelegateClass中声明的类,如

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

希望这会对你有所帮助。

答案 1 :(得分:2)

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

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

在自定义类的按钮方法中发布此通知。您还可以使用object参数传递任何数据(此处为零)。

并在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.
}

答案 2 :(得分:0)

编写委托方法。这将连接您的ViewController和自定义类。你有什么尝试?