我有两个自定义单元while(self.timer.valid && [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]);
文件加载的UITableView
。
第二个包含xib
。
但是因为我已经添加了UIButton
的自定义类 - 它有自己的操作和功能,我无法从xib
访问。
我的目标是在自定义单元格加载到tableview中时对ViewController
应用一些操作。
我的函数在ViewController中定义(因为所有变量都在那里),我的UIButton
操作在UIButton
的自定义类中定义。
如何将其中一个连接到另一个?
谢谢
答案 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和自定义类。你有什么尝试?