2017-01-23 12 views
0

このコールバックを使用して、再利用可能なセルがいつ検出されようとしています。ドキュメントによれば、署名は:UITableView tableView(_:didEndDisplaying:forRowAt :)が呼び出されていません

optional func tableView(_ tableView: UITableView, 
     didEndDisplaying cell: UITableViewCell, 
     forRowAt indexPath: IndexPath) 

実際には、これはXcode 7.3とSwiftでコンパイルされません。 IndexPathはNSIndexPathでなければならず、_は削除しなければならないと思います。だから私は得る:

@objc func tableView(tableView: UITableView, 
    didEndDisplaying cell: UITableViewCell, 
    forRowAt indexPath: NSIndexPath) { 

しかし、これは決して呼ばれない。

デキュー機能は、(下)罰金と呼ばれ、テーブルには、そうでない場合は動作します:

@objc func tableView(tableView: UITableView, 
    cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

ので、それは私のデータ・ソースは、[OK]を働いている暗示します。

これがAPIの機能していない部分であるかどうかは疑問です。

(P。私は@objcがそこにある理由を思い出しませんが、それを削除しても何の違いもありません)。

+1

あなたが持っている 'didEndDisplaying'署名は、Swift 3バージョンですが、Swift 2を使用していると主張している' cellForRow'署名に基づいています。 – dan

答えて

3

デキュー機能は、(下)罰金と呼ばれ、テーブルには、そうでない場合 に動作します:

@objc func tableView(tableView: UITableView, 
    cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

ので、それは私のデータ・ソースがOK取り組んでいる暗示します。 tableView(_:didEndDisplaying:forRowAt:)はないUITableViewDataSourceため、UITableViewDelegateを指すこと

注意。あなたのクラスもであることを確認することをお勧めします。UITableViewDelegateに準拠しています。

また、Xcodeの7.3を使用すると、あなたはスウィフト2.xのを書いていること、それは次のようになりますスウィフト3では

func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    //... 
} 

、それは次のようになります。

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    // ... 
} 

これは助けを願っています。

+0

OK - それでした。私はデータソースと適切な代理人の間で混乱していました。ビューコントローラで、正しい署名があれば、正常に動作します。そしてSwift 3の情報に感謝します。私は少しそれを無視していた。 – rghome

関連する問題