fandro
fandro

Reputation: 4903

Swift 2 can not add a slider to a UITableView Cell

I m trying to create a slider cell in a UItableview with swift, it appear, but it's not working, I want to display the value of it in live but it's not working, I tried to use action on the slider itself, I tried changed Editing Changed Method not working too.

Here is my cell code :

import UIKit


class SliderCell: UITableViewCell {

    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var maxLegendLabel: UILabel!
    @IBOutlet weak var minLegendLabel: UILabel!
    @IBOutlet weak var slider: UISlider!
    @IBOutlet weak var answerLabel: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        slider.userInteractionEnabled = true
        slider.continuous = true
        //  slider.addTarget(self, action: #selector(sliderValueChanged), forControlEvents: UIControlEvents.ValueChanged)

    }

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

        // Configure the view for the selected state
    }

    @IBAction func sliderAction(sender: UISlider) {
        print("slider ACTION value")
        print(sender.value)
    }

    func sliderValueChanged(sender: UISlider) {
        print("slider value")
        print(sender.value)
        answerLabel.text = "Your choice : " + String(sender.value)

    }

    func displayBlock(block: Block){
        titleLabel.text = block.title
        minLegendLabel.text = block.range?.legendMin
        maxLegendLabel.text = block.range?.legendMax
        slider.minimumValue = Float((block.range?.min)!)!
        slider.maximumValue = Float((block.range?.max)!)!
        slider.value = 1
    }
}

and here is how I declare it in my tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell method :

let cell = tableView.dequeueReusableCellWithIdentifier(CurrentFormTableView.CellIdentifiers.SliderCell, forIndexPath: indexPath) as! SliderCell
                cell.displayQuestion(block)
                cell.selectionStyle = UITableViewCellSelectionStyle.None
                tableView.rowHeight = UITableViewAutomaticDimension
                tableView.estimatedRowHeight = 160.0
                return cell

Upvotes: 2

Views: 526

Answers (2)

Eliko
Eliko

Reputation: 1137

I added the slider to the Storyboard itself and in the code I did this:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MenuTableViewCell
if indexPath.row == 0 {
            cell.slider.alpha = 1
        } else {
            cell.slider.alpha = 0
        }
 return cell 
}

It means that it will show the slider only on the first cell, and every other cell won't show it.

Of

Upvotes: 0

Mr. Bond
Mr. Bond

Reputation: 427

Add this in Table view cell:

sliderDemo = UISlider(frame:CGRectMake(0, 0, 200,20))
    var numberOfSteps : NSInteger = numbers.count - 1
    sliderDemo.minimumValue = 6.5
    sliderDemo.maximumValue = 4.1
    sliderDemo.continuous = true
    sliderDemo.value = 4.0
    sliderDemo.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged)
    self.view.addSubview(sliderDemo)

func sliderValueDidChange(sender:UISlider!)
{
    println("number:\(sender.value)")
}

Upvotes: 1

Related Questions