ios - 如何在 didSelectRow 中保存选择?
问题描述
我想从 tableview 保存选择并选择行,所以我可以将它传递给 UILabel。我正在尝试将一个字符串保存为引用并保存选定的行,然后我将引用传递给标签,但它不起作用。这是我的代码设置我的 cellForRow 和 didSelectRow。当我尝试在我的 reloadVC 函数中传递它时,我的 saveSelectedClass 和 saveSelectedSubject 不起作用,而在我的 didSelectRow 中已经保存了它
@IBOutlet weak var classContainer: UIView!
@IBOutlet weak var classNameLbl: UILabel!
@IBOutlet weak var classTableView: UITableView!
@IBOutlet weak var classDownArrowIV: UIImageView!
@IBOutlet weak var subjectContainer: UIView!
@IBOutlet weak var subjectNameLbl: UILabel!
@IBOutlet weak var subjectDownArrowIV: UIImageView!
@IBOutlet weak var subjectTableView: UITableView!
var selectedIndexPath = IndexPath(row: 0, section: 0)
var selectedClass: String?
var selectedSubject: String?
func reloadVC() {
ClassService.shared.getClassId { result in
switch result {
case .success(let classes):
self.classes.removeAll()
self.classes = classes
self.classNameLbl.text = self.selectedClass
self.selectedId = classes.first?.id
case .failure(let error):
print(error)
break
}
}
ClassService.shared.getSubjectData(classId: selectedId ?? "", date: selectedDay ?? "") { result in
switch result {
case .success(let subjects):
self.subjects.removeAll()
self.subjects = subjects
self.subjectNameLbl.text = self.selectedSubject
case .failure(let error):
print(error)
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if tableView == classTableView {
if indexPath == selectedIndexPath {
selectedClass = classes[indexPath.row].name
tableView.reloadData()
}
}
if tableView == subjectTableView {
if indexPath == selectedIndexPath {
selectedSubject = subjects[indexPath.row].subjectName
tableView.reloadData()
}
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == classTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "classCellId", for: indexPath)
let className = classes[indexPath.row]
cell.textLabel?.text = className.name
return cell
}
if tableView == subjectTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "subjectCellId", for: indexPath)
let item = subjects[indexPath.row]
cell.textLabel?.text = item.subjectName
return cell
}
return UITableViewCell()
}
extension GASViewController: JKCalendarDelegate {
func calendar(_ calendar: JKCalendar, didTouch day: JKDay) {
selectedDate = day
selectedDay = selectedDate.date.toString()
reloadVC()
calendar.reloadData()
}
}
解决方案
推荐阅读
- python - 使 Python 中的 GStreamer 视频/音频平滑和循环
- mongodb - MongoDB Aggregation - $unwind order 文档是否与嵌套数组 order 相同
- vue.js - 我收到一个错误“无法读取未定义的属性 $apollodata”,但我的页面没有 Apollo 的属性
- reactjs - 什么时候在组件上调用反应构造函数?因为我的只被调用一次
- javascript - 在 angularjs 中使用 ng-pattern 时浏览器挂起
- javascript - Navigator.getGamepads() 不会返回相同类型游戏手柄的不同实例
- python - 数据流作业一直显示“开始”
- angular - 如何防止我导入的模块覆盖我的路由?
- wordpress - Wordpress:重命名工具栏链接
- python-3.x - 在 Python 中从字符串中删除除句点 (.) 和冒号 (:) 之外的所有标点符号