2017-08-16 81 views
-2

方案: 我有一個表視圖和一個自定義按鈕單元格。在單元的控制器中,我做了一個委託來調用MainController的一個函數。 問題是我的單元格按鈕操作正在觸發,但刪除功能沒有。代表函數沒有觸發 - Swift 4

CustomCell控制器:

import UIKit 

protocol CustChatButtonDelegate: class { 
    func chatActionClick(cell: CustButtonCell) 
} 
class CustButtonCell: UITableViewCell { 

    var delegete:CustChatButtonDelegate? 
    @IBOutlet weak var btnChat: UIButton! 

    override func prepareForReuse() { 
     super.prepareForReuse() 
//  self.delegete=nil 
    } 
    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 
    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 
    @IBAction func btnChatActionClick(_ sender: Any) { 
     print("btn click") 
     self.delegete?.chatActionClick(cell: self) 
    } 

} 

MainController:

import UIKit 

class ChatController: UIViewController ,UITableViewDelegate, UITableViewDataSource, ChatButtonDelegate,CustChatButtonDelegate { 

func chatActionClick(cell: CustButtonCell) { 
     print("btnClicked") 
    } 

} 
+0

在您創建單元格的地方添加'cell.delegate = self' –

+0

您是否設置了CustButtonCell的委託屬性?此外,您可能希望將該委託聲明爲「弱」,因爲否則將有一個參考週期。 – Palle

+0

你的代碼中的' .delegate = self'(或類似的東西)在哪裏?換句話說,你在哪裏給'delegate' var賦值了? – holex

回答

3

這是一個相當普遍的問題。

只需在您創建單元格的位置添加cell.delegate = self,例如在cellForRowAt中。

也讓你的委託物業weak

0

委託對象應維護一個對其委託的引用。

weak var delegete: CustChatButtonDelegate? 

請注意,默認是開啓的對象引用應用。