2017-09-21 14 views
0

これまでのところ、ユーザーがサブジェクトを入力し、各サブジェクトの名前とスライダーとスライダーの値ラベルと共にテーブルビューが表示されます。以下を参照してください:テーブルビューからデータを収集するswift

Click Here for Image (I don't have enough reputation yet to embed an image.)

私は各被験者のデータとスライダーの値だけでなく、結合されたすべてのスライダーの合計値を収集し、処理することができるようにしたいです。

私はこれについてどうなるかわかりません。私はすべてのスライダーの合計を取得するために以下のコードを試してみましたが、それは動作しません、と私はここからそれをしようとする方法がわからないです。:

class SubjectsViewControllerTableViewCell: UITableViewCell { 

var isSliderTotal: Float = Float(GlobalSubjects.subjects.count) * 50 
var lastUp: Float = 50 
var lastDown: Float = 50 
@IBOutlet var subjectLabel: UILabel! 
@IBOutlet var percentLabel: UILabel! 
@IBOutlet var slider: UISlider! 
@IBAction func slider(_ sender: Any) { 
    (sender as AnyObject).setValue(Float(roundf(slider.value * 1)/1), animated: true) 
    print("test") 
    let sliderValueAsVar = String(slider.value) 
    percentLabel.text = String(sliderValueAsVar.components(separatedBy: ".")[0]) 
    if slider.value > 50 { 

     let currentSlider = slider.value - lastDown 
     lastDown = slider.value 
     isSliderTotal += currentSlider 
     print (isSliderTotal) 

    } 
    else if slider.value < 50 { 

     let currentSlider = slider.value + lastUp 
     lastUp = slider.value 
     isSliderTotal -= currentSlider 
     print (isSliderTotal) 

     } 
    } 
    override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

私も手掛かりを持って知っていませんあなたが辞書を使うかもしれないという事実を除いて、どのように私が各スライダーとサブジェクトの価値を得るかについて?

ご協力いただければ幸いです。

ありがとうございます。

+0

あなたは**モデル**が必要ですwコントローラで、スライダの値が変更されてモデルを更新し、必要な数学を行うときに呼び出される 'cellForRow ...'のコールバッククロージャとスライダの値を保持します。 – vadian

答えて

0

デリゲートを使用できます。あなたのtableViewControllerで :yourTableViewCell.swift で

protocol YourTableViewCellDelegate { 
    func passSliderValue() 
} 

class YourTableViewController: UITableViewController, YourTableViewCellDelegate { 
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let currentCell = tableView.dequeueReusableCell(withIdentifier: "YourCellIdentifier", for: indexPath) as! YourTableViewCell 
     currentCell.delegate = self 
    } 

    func passSliderValue(){ 
    //deal with your data 
    } 
} 

プロパティを追加します。あなたのFUNCスライダー(_差出人:任意)で

var delegate: YourTableViewCellDelegate! 

、その後に、呼び出し:

self.delegate.passSliderValue() 

スライダーの値を渡す必要があるとき

関連する問題