在应用程序中,我有一些自定义协议,我的UIViewController遵循这些协议。我有一个自定义的tableViewCell类,里面有UIImageView和UITextView。出队后,我将单元的委托设置为UIViewController。但是,只有一个自定义协议进行回调(imagepicker协议)。
protocol customProtocol1{
func pickImage(myInt: Int)
}
protocol customProtocol2{
func protocol2 (myInt: Int)
}
class controller1: UIViewController, UITableViewDelegate, customProtocol1, customProtocol2 {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section:Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! CustomTableCellClass
cell.delegate = self
return cell
}
func pickImage ( myInt: Int){
print("This line prints")
}
func protocol2 (myInt: Int){
print ("This line doesn't print")
}
}下面是customTableCellClass代码:
class CustomTableCellClass: UITableViewCell, UITextFieldDelegate, UITextViewDelegate {
var imageDelegate: customProtocol1?
@IBAction func pickImage( sender: AnyObject) {
imageDelagate?.pickImage(205)
}
var somethingElseDelegate: customProcotol2?
@IBActon func clickOnButton( sender: AnyObject) {
print("this line prints")
somethingElseDelegate?.protocol2(2)
}
override func awakeFromNib(){
super.awakeFromNib()
}
}我的问题是,为什么第一个协议得到回调,而第二个协议没有?
发布于 2016-09-14 08:37:53
根据我在代码中看到的,您只设置了一个委托,将cellForRowAtIndexPath中的代码更改为
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! CustomTableCellClass
cell.imageDelegate = self
cell.somethingElseDelegate = self
return cell
}发布于 2016-09-14 08:40:05
您的custom cell有两个委托属性,imageDelegate和somethingElseDelegate,但在您的tableView(tableView:cellForRowAtIndexPath:)实现中,您只分配了一个属性。
如果您同时设置了这两个属性,则您的实现应该可以工作。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! CustomTableCellClass
cell.imageDelegate = self
cell.somethingElseDelegate = self
return cell
}https://stackoverflow.com/questions/39480831
复制相似问题