2016-10-04 6 views
0

行が選択されたときにtableViewが表示されます。表示される(テーブルビューの外に)ボタンが表示されます(isEnabled = true)選択された行を無効にする(isEnabled = false。これはどのようにして処理できますか?)tableViewの行が選択されている場合、ボタンの状態を変更します。

現在のところ、このロジックはありますが、複数の行を選択しようとすると問題が発生します。それを可能にし、第二には、それを無効にします。ここ

はコードです:。私はと呼ばれる上に、VARにtrueまたはfalseを保存

ます。var someRowSe虚偽=

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     let selectedCell = tableView.cellForRow(at: indexPath) 
     selectedCell?.contentView.backgroundColor = UIColor(red: 84.0/255, green: 199.0/255, blue: 252.0/255, alpha: 1) 


     if(!someRowSelected){ 
      self.someRowSelected = true 
      nextBtn.isEnabled = true 
      nextBtn.backgroundColor = UIColor(red: 84.0/255, green: 199.0/255, blue: 252.0/255, alpha: 1) 
     }else{ 
      self.someRowSelected = false 
      nextBtn.isEnabled = false 
      nextBtn.backgroundColor = UIColor.darkGray 
     } 

    } 

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
     let selectedCell = tableView.cellForRow(at: indexPath) 
     selectedCell?.textLabel?.textColor = UIColor.darkGray 

     if(!someRowSelected){ 
      self.someRowSelected = true 
      nextBtn.isEnabled = true 
      nextBtn.backgroundColor = UIColor(red: 84.0/255, green: 199.0/255, blue: 252.0/255, alpha: 1) 
     }else{ 
      self.someRowSelected = false 
      nextBtn.isEnabled = false 
      nextBtn.backgroundColor = UIColor.darkGray 
     } 
    } 

誰かが私を助けてくれるのか不思議です。

ありがとうございました! :)

答えて

0

のように上に変数を作成します。選択された行の総数をチェックせずに選択解除されます。

あなたのコードの多くを変更することなく、最も簡単な方法は、

var rowsSelected = 0 

そして、あなたのdidSelectRowに

の値があれば、あなたのif文のチェックに続いて rowsSelected += 1 に1を追加すると呼ばれる新しい変数を追加することですdeselectRowで
If rowsSelected is >= 1 { 
//enable and un hide your button 
} 

は逆の操作を行うと、Ifステートメントif rowsSelected == 0 { //hide the button and disable it}

そして rowsSelected -= 1から1減算します

私はこれが役立つことを願っています。

+0

恐ろしい男!これは簡単で、魅力のように機能します。まさに私が探していたもの。この解決策に本当に感謝します。 :D –

+0

UITabelCellからデータを取得して変数に入れることで、Firebaseデータベースに送ることができるのですか? –

+0

私は手伝ってくれるだろう...あなたがもっと手の込んだことができれば、あなたの達成しようとしていることについて私はうれしく助けてくれるでしょう – OverD

0

ここで私はあなたのコードに小さな変更を加えました。それがあなたを助けるかどうか見てください。あなたは、本質的にやっていることは、真のブールの値を変更する場合はfalseその後、選択されているので、あなたのコードは一つだけのセルが選択されている場合、それは、動作しますが大丈夫ですsomeRowSelected

var indexPAthSelected : NSIndexPath? 

if !someRowSelected { 
    self.someRowSelected = true 
    nextBtn.isEnabled = true 
    nextBtn.backgroundColor = UIColor(red: 84.0/255, green: 199.0/255, blue: 252.0/255, alpha: 1) 
    indexPAthSelected = indexPath 
} else if indexPAthSelected == indexPath { 
    self.someRowSelected = false 
    nextBtn.isEnabled = false 
    nextBtn.backgroundColor = UIColor.darkGray 
} else { 

} 
+0

indexPathは認識されません。未解決の識別子の使用indexPath –

関連する問題