2017-02-05 9 views
0

静的コンテンツを持つUITableViewの特定のセクションで、特定のセルグループの順序を変更しようとしています。ビューが読み込まれる前にこれを実行しようとしていますが、何らかの理由でそれを動作させることができません。Swift 3 - 静的TableViewコントローラの行順序を変更する

私はセル毎に参照アウトレットを作成し、tableView.indexPathに呼び出すことによってtableView.moveRowを呼び出す試みた(ため:CELL1

Iはまた、それぞれにタグを与え、その中で細胞をループ試みましたセクションなし成功して並べ替え

私が試してみました:。

// Moving the row from it's default row 
self.tableView.moveRow(at: IndexPath(row: 1, section: 1), to: IndexPath(row: newRow, section: 1)) 

// Creating a reference outlet called cell1 
self.tableView.moveRow(at: self.tableView.indexPath(for: cell1)!, to: IndexPath(row: newRow, section: 1)) 

// Giving the static cell a reuseidentifier in interface builder 
self.tableView.dequeueReusableCell(withIdentifier: "Cell1", for: IndexPath(row: self.subwayOrder+1, section: 1)) 
+0

ビューロードが行われる前にそれをやろうとしているので、ViewDidLoadメソッドでこれを実行してください。ビューのコントローラがビュー階層をメモリにロードした後、このメソッドが呼び出されます。 https://developer.apple.com/reference/uikit/uiviewcontroller/1621495-viewdidload。ビューがメモリにないため、上記のコードは機能しません。 – iAviator

+0

私はviewDidLoad()でこれをやっていますが、どれもうまくいかないようです。 –

+0

これは 'func tableView(tableView:UITableView !, canMoveRowAtIndexPath indexPath:NSIndexPath!) - > Bool'で実装されています。メソッド 'func tableView(tableView:UITableView !, moveRowAtIndexPath sourceIndexPath:NSIndexPath !, toIndexPath destinationIndexPath:NSIndexPath!)'を呼び出します。また、これをチェックしてくださいhttp://stackoverflow.com/questions/24772457/swift-reorder-uitableview-cells – iAviator

答えて

0

あなたが達成しようとしている内容に応じて、あなたはおそらくSUPを呼び出すことによってcellForRowにインデックスパスを切り替え成功を持つことができますerの実装です

+0

これは大きな回避策を取り入れました。私はcellForRowAtを実装しなければなりませんでしたが、再利用識別子を持つデキュー・セルを使用する代わりに、各セルへの参照を返すだけでした。 –

+1

デキューすることは勧めませんでした。 superを呼び出すだけです。それはうまくいかなかったのですか? – Andreas

+0

いいえ、あなたは完全に正しいです。申し訳ありませんが、SwiftとiOSの新機能です。cellForRowAtを実装していた場合、セルをデキューする必要があると仮定していました。 –

関連する問題