2017-06-16 111 views
0

HogeViewController.swift不要在didSelectRowAt運行的委託方法

protocol HogeDelegate: class { 
    func huga() 
} 
class HogeViewController: UIViewController,UITableViewDelegate, UITableViewDataSource{ 
    weak var delegate: 
    func tableView(didSelectRowAt){ 
    self.delegate?.huga() 
    } 
} 

HogeTableViewCell.swift

class HogeTableViewCell: UITableViewCell, HogeDelegate{ 
    func huga(){ 
    print("huga") 
    } 
} 

不運行這段代碼...

這是寫作不可能?

回答

0

由於細胞是VAR可以這似乎是一個規範,不能通過委託來實現方法。

2

func tableView(didSelectRowAt)不是UITableViewDelegate的方法的簽名,所以不,它永遠不會被調用。你的函數的簽名必須

func tableView(_ tableView: UITableView, didSelectRowAt rowIndex: Int)

更妙的是,而不是讓你的類擴展UIViewController並實現UITableView數據源和委託,只是讓你的類擴展UITableViewController,這已經實現了數據源和委派,從而將迫使你使用override改性劑,像

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)