如何在分段控制器内的 tableView 中保存选定行的状态?
How to save state of selected rows in tableView inside segmentedController?
我有一个有两个段的分段控制器。每个段都有一个公共的 tableView。
切换段时如何保存选定的单元格?您能否提供一些实现方法?
切换段时我只能保存一个选定的行。
视图模型
var years: [String] = []
var genres: [String] = []
var selectedGenr: Int?
var selectedYear: Int?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if segmentedControl.selectedSegmentIndex == 0 {
if viewModel.selectedGenr == indexPath.row {
viewModel.selectedGenr = nil
} else {
viewModel.selectedGenr = indexPath.row
}
} else {
if viewModel.selectedYear == indexPath.row {
viewModel.selectedYear = nil
} else {
viewModel.selectedYear = indexPath.row
}
}
tableView.reloadData()
}
}
您可以将选择存储为视图模型中的列表
然后在 table 视图中
伪代码
if segmentedControl.selectedSegmentIndex == 0 {
if viewModel.selectedYears.contains(indexPath.row) {
viewModel.selectedYears.remove(indexPath.row)
}
else {
viewModel.selectedYears.append(indexPath.row)
}
}
if segmentedControl.selectedSegmentIndex == 0 {
if self.selectedIndexesForGenres.contains(indexPath.row) {
if let index = self.selectedIndexesForGenres.firstIndex(of: indexPath.row) {
self.selectedIndexesForGenres.remove(at: index)
}
} else {
self.selectedIndexesForGenres.append(indexPath.row)
}
}
else {
if self.selectedIndexesForYears.contains(indexPath.row) {
if let index = self.selectedIndexesForYears.firstIndex(of: indexPath.row) {
self.selectedIndexesForYears.remove(at: index)
}
} else {
self.selectedIndexesForYears.append(indexPath.row)
}
}
self.tableView.reloadData()
}
我有一个有两个段的分段控制器。每个段都有一个公共的 tableView。 切换段时如何保存选定的单元格?您能否提供一些实现方法?
切换段时我只能保存一个选定的行。
视图模型
var years: [String] = []
var genres: [String] = []
var selectedGenr: Int?
var selectedYear: Int?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if segmentedControl.selectedSegmentIndex == 0 {
if viewModel.selectedGenr == indexPath.row {
viewModel.selectedGenr = nil
} else {
viewModel.selectedGenr = indexPath.row
}
} else {
if viewModel.selectedYear == indexPath.row {
viewModel.selectedYear = nil
} else {
viewModel.selectedYear = indexPath.row
}
}
tableView.reloadData()
}
}
您可以将选择存储为视图模型中的列表 然后在 table 视图中
伪代码
if segmentedControl.selectedSegmentIndex == 0 {
if viewModel.selectedYears.contains(indexPath.row) {
viewModel.selectedYears.remove(indexPath.row)
}
else {
viewModel.selectedYears.append(indexPath.row)
}
}
if segmentedControl.selectedSegmentIndex == 0 {
if self.selectedIndexesForGenres.contains(indexPath.row) {
if let index = self.selectedIndexesForGenres.firstIndex(of: indexPath.row) {
self.selectedIndexesForGenres.remove(at: index)
}
} else {
self.selectedIndexesForGenres.append(indexPath.row)
}
}
else {
if self.selectedIndexesForYears.contains(indexPath.row) {
if let index = self.selectedIndexesForYears.firstIndex(of: indexPath.row) {
self.selectedIndexesForYears.remove(at: index)
}
} else {
self.selectedIndexesForYears.append(indexPath.row)
}
}
self.tableView.reloadData()
}