2017-01-26 90 views
0
extension FormViewController : UITableViewDelegate { 
    public func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? 
    public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    public func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    public func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    public func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    public func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 
    public func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 
    public func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat 
} 

extension FormViewController : UITableViewDataSource { 
    public func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    public func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? 
    public func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? 
} 

class NotifiableFormViewController: FormViewController 

爲什麼我不能實現和重寫DataSource和TableViewDelegate?錯誤:「方法不覆蓋它的任何超類方法」無法覆蓋UITableViewDataSource和UITableViewDelegate

class FriendsTableViewController: NotifiableFormViewController{ 
    override func numberOfSections(in tableView: UITableView) -> Int { 
     return 3 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 5 
    } 

    override func tableView(tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath) 

     cell.textLabel?.text = "Section \(indexPath.section) Row \(indexPath.row)" 

     return cell 
    } 

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     return "Section \(section)" 
    } 
} 
+0

可能是這可以幫助:http://stackoverflow.com/a/31432610/656600 – rptwsthi

+0

我需要在擴展名 – UnRewa

+0

[重寫方法在Swift擴展]可能的重複(http://stackoverflow.com/questions/38213286 /壓倒一切的方法合迅速的擴展) – Koraktor

回答

0

根據定義,擴展只能將功能添加到現有類。它不能改變,包括重寫,現有的實現。我希望這有幫助。

1

更簡單,刪除該單詞override因爲你沒有覆蓋方法,要實現它

0

UITableViewDataSourceUITableViewDelegate只是協議 如果你想覆蓋它,你在NotifiableFormViewController

實現上述功能

然後在你的覆蓋FriendsTableViewController

但如果沒有在你的超類實現,那麼你不能覆蓋它(沒有覆蓋實現的委託或數據源函數)