【发布时间】:2022-01-04 00:22:43
【问题描述】:
我有以下用户界面:
我想检索我点击开关所在行的indexPath。
例如,如果我点击开关Task 1,我想将结果存储到一个变量中。在此示例中,该变量将保存字符串“Task 1”。我怎样才能做到这一点?
这里有一些重要的事情要知道。
我正在创建一个自定义单元格,并为此创建了一个自定义类。
CellTask.swift
import UIKit
import FirebaseDatabase
class TaskCell: UITableViewCell {
@IBOutlet weak var completed: UISwitch!
@IBOutlet weak var taskLabel: UILabel!
private let database = Database.database().reference()
var tcTitle: String = ""
func setTaskTitle(task: Task){
taskLabel.text = task.title
}
@IBAction func completedTask(_ sender: UISwitch) {
if sender.isOn{
taskLabel.textColor = UIColor.red
}else{
taskLabel.textColor = UIColor.black
}
}
}
- tcTitle 将从主 ViewController 中获取单元格的名称
这是我在cellForRowAt函数中尝试做的,但它不起作用:
let uv = TaskCell()
uv.tcTitle = task
这是 TableView 的完整代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let row = taskTitles[indexPath.row]
let tc = storyboard?.instantiateViewController(identifier: "UpdateTask") as! TaskUpdateViewController
tc.titleOfTask = row
tc.modalPresentationStyle = .fullScreen
//wrap the new view controller in a navigation controller (this adds the top bar)
let navigationController = UINavigationController(rootViewController: tc)
// so you can actually see the Create a Task text,
navigationController.navigationBar.barStyle = .default
present(navigationController, animated: true)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return taskTitles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let task = taskTitles[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "TaskCell") as! TaskCell
cell.taskLabel.text = task
let uv = TaskCell()
uv.tcTitle = task
return cell
}
【问题讨论】:
标签: ios swift uitableview