У меня есть табличный вид с тремя разделами (Services, Availability and Days) и несколькими строками в каждом из них. Я применил a, чтобы увидеть галочку, когда вы выбираете любую строку. Теперь я хочу снова увидеть выбранные строки, когда вы снова показываете таблицу после того, как я уволил ее в первый раз. Как показано историю выбранных элементов.См. Также галочку после отклонения таблицыView в swift
здесь код, чтобы показать пометку:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indPath = indexPath
let section = indPath.section
switch section {
case 0:
updateCell(indPath, select: true)
case 1:
updateCell(indPath, select: true)
case 2:
updateCell(indPath, select: true)
default:
Void()
}
}
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let indPath = indexPath
let section = indPath.section
switch section {
case 0:
updateCell(indPath, select: false)
case 1:
updateCell(indPath, select: false)
case 2:
updateCell(indPath, select: false)
default:
Void()
}
}
func updateCell(indexpath: NSIndexPath, select: Bool) {
if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: indexpath.row, inSection: indexpath.section)) {
if select{
cell.accessoryType = .Checkmark
}
else {
cell.accessoryType = .None
}
}//end if cell
Теперь здесь метод, где я получаю данные из выбранных строк:
func save(){
if let indexPaths = self.tableView.indexPathsForSelectedRows{
for indexPath in indexPaths{
switch indexPath.section{
case SectionIndex.Services.rawValue:
switch indexPath.row{
case ServicesIndex.Recieve.rawValue:
selectedServices.insert("RECEIVE")
case ServicesIndex.Send.rawValue:
selectedServices.insert("SEND")
default:
Void()
}//end switch
case SectionIndex.Availability.rawValue:
switch indexPath.row{
case AvailabiltiyIndex.Morning.rawValue:
selectedAvailabilities.append(6.0...9.0)
case AvailabiltiyIndex.Regular.rawValue :
selectedAvailabilities.append(9.0...18.0)
case AvailabiltiyIndex.Evening.rawValue:
selectedAvailabilities.append(18.0...21.0)
default:
Void()
}//end switch
case SectionIndex.Days.rawValue:
switch indexPath.row{
case DaysIndex.Sunday.rawValue:
selectedDays.insert("Sunday")
case DaysIndex.Monday.rawValue:
selectedDays.insert("Monday")
case DaysIndex.Tuesday.rawValue:
selectedDays.insert("Tuesday")
case DaysIndex.Wednesday.rawValue:
selectedDays.insert("Wednesday")
case DaysIndex.Thursday.rawValue:
selectedDays.insert("Thursday")
case DaysIndex.Friday.rawValue:
selectedDays.insert("Friday")
case DaysIndex.Saturday.rawValue:
selectedDays.insert("Saturday")
default:
Void()
}//end switch
default:
Void()
}//end switch
}//end for
}//end If
}//end save
Thx для вас помощь. Фактически после отклонения вида таблицы все выбранные данные не сохраняются. Таким образом, в основном то, что у меня есть, является видом карты и кнопкой фильтра, когда я нажимаю кнопку фильтра, перейдите к рассмотренному выше описанию таблицы фильтров. Мне нужно, чтобы после выбора пользователем параметров фильтра, которые ему нужны, он должен был видеть, что он выбрал, когда он возвращается к просмотру таблицы фильтров. Я новичок в быстрой и IOS. Я не уверен, как сохранить то, что выбрал пользователь, и как его вернуть. :) –
У вас есть контроллер вида (VC), который используется для отображения вида таблицы фильтров (FVC). В VC сохраняется структура данных, в которой сохраняется состояние выбора. Передайте его в FVC, используя 'prepareForSegue' (google it). Затем вы можете обновить структуру данных во время FVC, и она снова появится там, когда вы снова откроете FVC. Структура данных может быть массивом (разделами) словарей (строк), где значения Bools (true/false = selected/not selected). –
Спасибо! Я решил это с помощью метода делегата –