从不同的 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");
}
希望对您有所帮助。
我有一个从两个自定义单元格 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");
}
希望对您有所帮助。