2017-06-06 9 views
0

静的テーブルビューに少し問題があります。私は私のグリッドのオプションとして表示されるPopOverを持っています。私は以前、コントローラにlastSelected(最後indexPath)をスローするようにdelegateを使用しようとしているSwift:静的テーブルビューで選択したindexPathを保存して表示

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    var currSelected: IndexPath? 

    let section = indexPath.section 
    let numberOfRows = tableView.numberOfRows(inSection: section) 
    for row in 0..<numberOfRows { 
     if let cell = tableView.cellForRow(at: NSIndexPath(row: row, section: section) as IndexPath) { 
      cell.accessoryType = row == indexPath.row ? .checkmark : .none 
      tableView.deselectRow(at: indexPath, animated: false) 
      currSelected = indexPath 

      if section == 2 { 
       tableView.deselectRow(at: indexPath, animated: false) 
       cell.accessoryType = .none 
      } 
      else { 
       delegate?.option(lastSelected: currSelected!) 
       NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reload"), object: nil) 

      } 
     } 
    } 
} 

:私は私の静的なテーブルビューの状態(indexPath)を保存したいが、それは仕事をdoesntのようで、以下の私のスニペットコードですそれをPop Over Controllerに送って、それを手に入れました。しかし、私はこのlastSelectedを使ってチェックマークを表示することを知らない。そして、prepare for cell at関数は、再利用されたセルの識別子を必要としますが、私はそれを使用しません。

私はチェックマークを表示するためにthisと読みましたが、状態を保存していません。私もthisを読んだことがありますが、それも同じです。どんな提案/答えも私にとって助けになるでしょう。ありがとうございました

答えて

0
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    if indexPath == lastSelected { 
     cell.accessoryType = .Checkmark 
    } 
} 
+0

それはチェックマークを1つだけ保存します。私は2セクションを持っていないので、私はlastSelectedが2つのチェックマークを持っている場合2つのチェックマークが必要です –

+1

次に、IndexPath変数の代わりにIndexPathsの配列を格納し、 'willDisplayCell'でその配列をループする必要がある – Malik

+0

分離されたindexPath 。有用なsugestとして受け入れる、私は私の最終的なコードを更新します。前もって感謝します –

関連する問題