2016-04-15 16 views
0

У меня есть следующий класс для представления таблицы ячейки:изменить переключатель на Tableview строке затрагивая другие строки

class QuestionCell: UITableViewCell { 
    @IBOutlet weak var questionAnswer: UISwitch! 
    @IBOutlet weak var questionLabel: UILabel! 

    var data: Answer? 

    func configureForQuestion(data: Answer) { 
     print("configureForQuestion triggered") 
     questionLabel.text = data.question 
     self.data = data 
    } 

    @IBAction func questionAnswerChanged(sender: UISwitch) { 
     data?.answer = sender.on 
    } 
} 

Эта клетка состоит из метки и переключателя. В настоящее время, когда я изменяю статус переключателя для первой строки, он также изменяется для последней строки. Никакие другие строки, похоже, не связаны таким образом. Я довольно тупой на этом.

Дополнительно:

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return answers.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier(TableView.CellIdentifiers.QuestionCell, forIndexPath: indexPath) as! QuestionCell 
    cell.configureForQuestion(answers[indexPath.row]) 
    return cell 
} 
+0

Это подсказка, tableView.dequeueReusableCellWithIdentifier(), создающие проблему с помощью dequedCells. – satheeshwaran

+0

@satheeshwaran, так что я могу обойти это? – user2363025

+0

Итак, если вы переключаете переключатель в строке 2, это влияет на что-то еще или это просто происходит со строкой 1 всегда? – satheeshwaran

ответ

0

Вам необходимо переопределить prepareForReuse в ячейке и сбросить данные о элементах ui.

override func prepareForReuse() { 
    self.questionLabel.text = nil 
    self.questionAnswer.on = data?.answer 
} 
+0

Первоначально у меня был вопросAnswer.on = false в мой configureForQuestion func, но это вызывало проблему в том, что если бы я включил и прокрутил вниз по экрану и обратно, переключатель будет сброшен на значение false :( – user2363025

+0

исправлено - необходимо поставить questionAnswer.on = data.answer в мой configureForQuestion func! – user2363025

+0

одобренный ответ? – TomCobo

0

Это может быть, что ваш answers массив не имеет данные, которые вы ожидаете. Распечатайте значения answers в отладчике и посмотрите, есть ли у каждого answerindexPath.row, который вы ожидаете от него.

Можете ли вы показать свой код, как вы устанавливаете значения в answers?