【发布时间】:2021-04-29 21:32:53
【问题描述】:
在这里,我有一个带有表格视图的 VC,其中包含带有“设置时间”按钮的单元格。当我点击“设置时间”按钮时,它会转到一个弹出屏幕。在这里我可以点击“保存时间”按钮来保存时间(例如:“1:30”)并关闭弹出窗口。
弹出窗口消失后,我想更新表格视图行中“设置时间”按钮的文本,以显示已保存的时间(例如:“1:30”)。当我运行我的代码时,在弹出屏幕中保存时间后,我的按钮文本不会在表格视图中更新。
带有表格视图的 VC
class TaskListViewController: UIViewController {
var savedTaskTime = [String]()
var selectedTaskTime = ""
override func viewDidLoad() {
super.viewDidLoad()
taskList.delegate = self
taskList.dataSource = self
}
// Unwind segue
@IBAction func selectTimeDidSaveTime(_ segue: UIStoryboardSegue) {
let controller = segue.source as! SelectTimeViewController
selectedTaskTime = controller.selectedTaskTime
}
}
extension TaskListViewController: UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "taskCell", for: indexPath) as! TaskCell
// Configure timeButton title
cell.timeButton.tag = indexPath.row
if selectedTaskTime != "" {
cell.timeButton.setTitle(savedTaskTime[indexPath.row], for: .normal)
}
return cell
}
}
弹出式 VC
class SelectTimeViewController: UIViewController {
var hour: String = "0"
var min: String = "00"
var selectedTaskTime = ""
@IBOutlet weak var setTimeLabel: UILabel!
@IBAction func saveTimeButton(_ sender: UIButton) {
if setTimeLabel.text != "0:00" {
selectedTaskTime = "\(hour + ":" + min)"
} else {
// *Code for error alert*
}
}
override func viewDidLoad() {
super.viewDidLoad()
updateTimeLabel()
// *Code to initialize slider*
}
// Update Time Label with Slider Value
func updateTimeLabel() {
// *Code to convert slider value to timeSet value*
setTimeLabel.text = timeSet
}
// Segue runs when unwind segue is triggered
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "setTime" {
let controller = segue.destination as! TaskListViewController
controller.selectedTaskTime = selectedTaskTime
}
}
}
【问题讨论】:
标签: ios swift uitableview uibutton