2016-09-15 5 views
7

最近Xcode 8.0でプロジェクトをSwift 3に変換しましたが、わかりにくい関数でエラーが発生しました。これらのラインに:Swift 3.0 UITableViewDelege Objective-cメソッドが要件のセレクタと一致しません

extension HomeTableViewController : UITableViewDelegate { 

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

    } 
} 

エラーを解決するには、Xcodeはちょうどメソッドの前に@objc(tableView:commitEditingStyle:forRowAtIndexPath:)を追加するために私に語りました。

Xcode error

さて、それは動作しますが、それはこの方法だけのために必要とされる理由を私は得ることはありません。

Xcodeは私のtableView:heighForHeaderInSectionの前で@objcものを追加する必要はありませんが、私はこの方法とtableView:commitEditingStyle:forRowAtIndexPath:UITableViewDelegateの違いが表示されません。

したがって、tableView:commitEditingStyle:forRowAtIndexPathメソッドでこの必須項目が必須である理由は分かりますか?

ありがとうございます!

+0

@objc(tableView:heightForRowAtIndexPath :)メソッドと同じ問題があります。いいえアイデア理由 – Maiaux

答えて

10

拡張子に間違ったプロトコルを採用しています。 tableView:commitEditingStyle:forRowAtIndexPath:メソッドはUITableViewDataSourceプロトコルの一部です。 UITableViewDelegateプロトコルの代わりにUITableViewDataSourceプロトコルを採用するように内線番号を変更すると、エラーが消えます。

NSCollectionViewDelegate/DataSource拡張でこのエラーが発生したとき、少なくともこれは私のために働いた。

+0

ああ、ありがとう、私は気付かなかった! PEBCAK:/それはSwift 2.2で警告しなかったのは奇妙です – Toldy

関連する問題