У меня есть статический вид таблицы соты без segue. Это то же самое, что настройки iPhone -> Звуки-> Текстовые тона. Там нет проблем с реализацией галочки и воспроизведением этого системного звука с другого ViewController. При возврате к настройке ViewController звука нет галочки. Я сохраняю indexPath.row и indexPath.section в настройках по умолчанию. Я извлекаю это и сохраняю их в переменных. Как использовать эти переменные, которые теперь имеют indexPath «один для строки и один для раздела», чтобы указать ранее выбранную строку. Я пробовал решение в Интернете, видео и StackoverFlow, и я просто не могу этого понять.Checkmark исчезает при возврате в tableview
var rowSelected:Int = 0
var rowSection:Int = 0
override func viewDidLoad() {
super.viewDidLoad()
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
if let soundIsNotNill = defaults.objectForKey("rowSelectedKey") as? Int{
self.rowSelected = defaults.objectForKey("rowSelectedKey") as! Int}
if let soundIsNotNill = defaults.objectForKey("rowSectionKey") as? Int{
self.rowSection = defaults.objectForKey("rowSectionKey") as! Int}
}
override func viewWillAppear(animated: Bool) {
println(" VDL rowSelected \(rowSelected)")
println(" VDL rowSection \(rowSection)")
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 13
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let tappedItem = indexPath.row
rowSelected = tappedItem
let section = indexPath.section
rowSection = section
for row in 0..<13 {
if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: section)) {
cell.accessoryType = row == tappedItem ? .Checkmark : .None
}
}
println("didSelectRow rowSelected \(rowSelected)")
println("didSelectRow rowSection \(rowSection)")
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(section, forKey: "rowSectionKey")
defaults.setObject(tappedItem, forKey: "rowSelectedKey")
defaults.synchronize()
saveSound()
}
Я вижу, как работает restoreIdentifier, но не уверен, как его реализовать в приведенном выше ViewController. Я новичок в этом. У меня есть способ использовать идентификатор ячейки таблицы, чтобы сообщить tableview «willDisplayCell» или соответствующий «tableView (tableView: UITableView») использовать строку и раздел, которые сохраняются в переменных, чтобы добавить галочку назад? – Dan