У меня есть экран настроек с выбором между двумя единичными системами (метрическая и имперская) и хотел бы показать только одну галочку, когда пользователь выбрал конкретную ячейку и установите флажок, если выбрана другая ячейка. В настоящее время мой код выбирает обе ячейки, как показано, и не сохраняет галочку в выбранной ячейке, когда я возвращаюсь к просмотру поздно.Использование аксессуара галочки для отображения одной ячейки, выбранной в swift
Любые идеи о том, как я могу решить эту проблему. Я видел подобные вопросы в стеке, но большинство из них находятся в ObjC.
Код:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
var weightValue: String? = unitsDefaults.objectForKey(kCCWeightKeyMetric) as! String?
var distanceValue: String? = unitsDefaults.objectForKey(kCCDistanceKeyMetric) as! String?
let cell = tableView.cellForRowAtIndexPath(indexPath)
if indexPath.row == 0 {
weightValue = "pounds" //Set to this for the default value of weight
unitsDefaults.setObject(weightValue, forKey: kCCWeightKeyMetric) //Save the kg value
distanceValue = "miles" //Set to this for the default value of distance
unitsDefaults.setObject(distanceValue, forKey: kCCDistanceKeyMetric) //Save the km value
cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
unitsDefaults.synchronize()
//Check mark Selection
if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "miles" {
cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
} else if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "km"{
cell?.accessoryType = UITableViewCellAccessoryType.None
}
} else {
weightValue = "kg" //Set to this for the default value of weight
unitsDefaults.setObject(weightValue, forKey: kCCWeightKeyMetric) //Save the kg value
distanceValue = "km" //Set to this for the default value of distance
unitsDefaults.setObject(distanceValue, forKey: kCCDistanceKeyMetric) //Save the km value
unitsDefaults.synchronize()
//Check mark Selection
if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "km" {
cell?.accessoryType = UITableViewCellAccessoryType.Checkmark
} else if unitsDefaults.stringForKey(kCCDistanceKeyMetric)! == "miles"{
cell?.accessoryType = UITableViewCellAccessoryType.None
}
}
//Dismiss the View
if let navController = self.navigationController {
navController.popViewControllerAnimated(true)
}
}
Какой источник данных вы используете для этого вида таблицы? – vadian
Я использую статические ячейки в качестве статических прототипов. Следовательно, нет источника данных? Должен ли я использовать один или есть другой способ? – Gugulethu
Если ячейки статичны, вам фактически не нужна 'cellForRowAtIndexPath', потому что вы можете ссылаться на все статичные с помощью' IBOutlet'. – vadian