我想知道如何编写一个协议来向后传递数据到UITableViewController?如果我写一个正常的协议,就像为UIViewController写的那样,我得到一个错误“Type”TableViewController“不符合类型协议”PresentedViewControllerDelegate“。”
感谢您的帮助!
答案 0 :(得分:1)
只有协议是不够的,您还需要delegate
声明你的协议:
protocol PresentedViewControllerDelegate {
func method1(data:[String:AnyObject])
func method2(controller:PresentedViewController)
}
在第一种方法中,您传递自定义对象(Dictionary
),
在第二种方法中,目标控制器本身。
在目标视图控制器 PresentedViewController
(发件人)中创建委托属性:
weak var delegate : PresentedViewControllerDelegate?
并添加代码以调用方法
delegate?.method1(someDictionary)
delegate?.method2(self)
可选链接非常方便,如果委托是nil
,则不会调用方法。
在源视图控制器(接收方)中将PresentedViewControllerDelegate
添加到声明行,实现协议所需的方法并在prepareForSegue
中添加一行设置代表。
let destinationController = segue.destinationController as! PresentedViewController
destinationController.delegate = self
答案 1 :(得分:0)
创建您的协议,并让您的自定义UITableViewController子类确认您创建的协议。在你的控制器中实现所需的方法和属性,你就可以了。
例如:
protocol YourProtocol
{
func method1(par1: String, par2: Int)
}
class YourTableViewController: UITableViewController, YourProtocol
{
//MARK:- YourProtocol Methods
func method1(par1: String, par2: Int)
{
//Receive your data through this method
//And Do your thing here
}
}
答案 2 :(得分:0)
您的TableViewController尚未实现在PresentedViewControllerDelegate协议中声明的函数。实施这些功能,你就没事了。
protocol PresentedViewControllerDelegate {
func somefunction(parameter: String)
func anotherfunction()
}
class Table: UITableViewController, PresentedViewControllerDelegate {
func somefunction(parameter: String) {
}
func anotherfunction() {
}
}