web-dev-qa-db-ja.com

Swift 3?

Objective Cで記述されたコードがあります。このコードをSwift3コードに変換したいと思います。

[_expandableTableView reloadSections:[NSIndexSet indexSetWithIndex:gestureRecognizer.view.tag] withRowAnimation:UITableViewRowAnimationAutomatic];

オンラインツールを使用して変換した後、以下のコードを教えてくれましたが、機能しません

expandableTableView.reloadSections(IndexSet(index: gestureRecognizer.view!.tag), with: .automatic)

方法を教えてください。

21
Dhiraj Kumar

Swift 3.のセクションを再読み込みします

つまり、tableviewにはデフォルトでインデックスが0のセクションが1つあるため、0番目のセクションを0番目のセクションにリロードします。

//let myRange: ClosedRange = 0...0

self.tableViewPostComments.reloadSections(IndexSet(integersIn: 0...0), with: UITableViewRowAnimation.top)

Swift 4の場合

self.tableViewPostComments.reloadSections(IndexSet(integersIn: 0...0), with: UITableView.RowAnimation.top)
35
Jaleel Nazir

詳細については、Swift3のようにしてください this を参照してください

expandableTableView.reloadSections(IndexSet(integer: gestureRecognizer.view!.tag), with: .automatic)
33
Dung Tran

変換後にNSIndexSetIndexSetになったことに注意してください。 IndexSet は、Swift Foundationフレームワークへのオーバーレイ NSIndexSet

FoundationフレームワークへのSwiftオーバーレイは、NSIndexSetクラスとその可変サブクラスであるNSMutableIndexSetにブリッジするIndexSet構造を提供します。IndexSet値型は、NSIndexSet参照型と同じ機能を提供します。 2つは、Objective-C APIと対話するSwiftコードで交換可能に使用できます。この動作は、Swift標準文字列、数値、およびコレクション型をブリッジする方法に似ています対応するFoundationクラスへ。

reloadSectionsメソッドシグネチャの説明を確認した場合、次のことに注意してください。

reloadSections(_セクション:IndexSet、アニメーションあり:UITableViewRowAnimation

sectionsパラメーターはIndexSetですが、NSIndexSetではありません。

だから、あなたができることは:

_expandableTableView.reloadSections(NSIndexSet(index: gestureRecognizer.view.tag) as IndexSet, with: .automatic)

または、as IndexSetを使用せずにIndexSetを追加したい:

_expandableTableView.reloadSections(IndexSet(integer: gestureRecognizer.view!.tag), with: .automatic)
6
Ahmad F