2017-03-14 16 views
0

の場合は、tablepersistbottomに行を移動したいのですが、私は自分の変更を見たいと思っています。私は次のことをしましたが、行が動いていません選択時に行をテーブルの一番下に移動しますか?

if eventSegCtrl.selectedSegmentIndex == 0 { 
       myEventCell.eventLabel.text = self.eventScheduleOnc[indexPath.row].eventNameOnc 
       let eventDesc = self.eventScheduleOnc[indexPath.row].eventDecOnc 

       let eventStatus = eventDesc?.eventStatus 
      if eventStatus == 1 { 
       myEventCell.eventLabel.textColor = UIColor.green 
       DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { 
        tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .bottom, animated: true) 
       } 
      } 
      else if eventStatus == 2 { 
       myEventCell.eventLabel.textColor = UIColor.red 
       DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { 
        tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .bottom, animated: true) 
       } 
      } 
     else { 
      myEventCell.eventLabel.textColor = UIColor.black 
     } 
    } 

どうすれば解決できますか?

+0

こんにちは。最後の行まで下にスクロールするか、アイテムをオブジェクト配列の最後まで0に移動しますか? –

+0

実際にはオブジェクトを0からオブジェクトの配列の最後に移動します – Coder221

+0

私は答えを投稿しました。 –

答えて

0

IndexPath(row: 0, section: 0)にスクロールすると、最初のセクションの最初の行を意味します。つまり、先頭にスクロールします。あなただけの1つのセクションを持っている場合は

、これを変更:

IndexPath(row: 0, section: 0) 

let numberOfRows // How many rows you have? 
IndexPath(row: numberOfRows - 1, section: 0) 

あなたが複数のセクションおよび複数の行を持っている場合は

に、これらの代わりに変更します。

let numberOfSections // How many sections you have 
let numberOfRowsInLastSection = tableView.numberOfRows(inSection:numberOfSections-1) 
IndexPath(row: numberOfRowsInLastSection-1, section: numberOfSections-1) 
+0

1つのセクションがあり、IndexPathを試しました(行:numberOfRows - 1、セクション:0)。 – Coder221

0
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .bottom, animated: true) 

指定されたインデックスパス(0,0)の行が指定された位置(下)にあるように、テーブルビュー全体をスクロールしようとします。

セルの順序を変更すると聞こえます。そうするためには:

  1. データモデルを調整する必要があります。
  2. は(これはアニメ化されていない)テーブル全体をリロードするか、

スウィフトを呼び出して、次のいずれか

func moveRow(at indexPath: IndexPath, 
      to newIndexPath: IndexPath) 
+0

私のデータモデルを調整するためのサンプルがありますか – Coder221

+0

@ Coder221:データモデルとして使用しているものによって異なります。単純な配列の場合は、現在の場所のエントリを削除し、最後に追加する必要があります。 –

0

あなたが行を移動したい場合は、あなたがこれを行う必要があります。

override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
     return true} 

override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { 
     var itemToMove = tableData[fromIndexPath.row] 
     tableData.removeAtIndex(fromIndexPath.row) 
     tableData.insert(itemToMove, atIndex: toIndexPath.row) 
} 
+0

あなたが使用しているのは、indexPathのscrollToRowです。文字通り、ビューを指定したパスにスクロールします。あなたはあなたがしたいことをするために上記を使用する必要があります。 –

+0

移動するアイテムも== eventDesc。そして、tableData == eventScheduleOnc。 –

+0

試してみましたが、私は何の変化も見ません – Coder221

関連する問題