Я пытаюсь добиться функциональности, аналогичной приложению Apple для напоминаний, в котором табличное представление содержит все напоминания, а кнопка + в конце добавляет новый объект.
Мои объекты хранятся в массиве с именем tempActions
, который является источником данных для tableView.
Нажатие «Добавить действие» добавляет новый объект в массив с заголовком «Пустая ячейка».
Название UITextView
, которое пользователи смогут редактировать, но вот что я не могу понять, как это сделать:
Как мне взять текст из UITextView
изэтой конкретной ячейке, добавьте ее в массив с правильным индексом (индекс соответствует indexPath.row), а затем отобразите его в cell.label?
Я думал об использовании метода textViewDidEndEditing, но чтоЯ не знаю, как сделать, это сослаться на правильную ячейку из метода cellForRowAt. * 1019 *
Кто-нибудь сможет помочь прояснить это, или я подхожу к нему неправильно?
Воткод для вводаКласс e:
class Step3: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextViewDelegate {
// Outlets
@IBOutlet weak var sectionText: UILabel!
@IBOutlet weak var sectionHeader: UILabel!
@IBOutlet weak var teableViewHeight: NSLayoutConstraint!
@IBOutlet weak var tableview: UITableView!
@IBAction func addAction(_ sender: Any) {
tempActions.append(Action(title: "Empty Cell", completed: false))
tableview.reloadData()
tableview.layoutIfNeeded()
teableViewHeight.constant = tableview.contentSize.height
print(tempActions)
}
@IBAction func nextAction(_ sender: Any) {
let newGoal = Goal(
title: tempTitle,
description: tempDescription,
duration: tempDuration,
actions: nil,
completed: false
)
newGoal.save()
performSegue(withIdentifier: "ToHome", sender: nil)
}
func textViewDidEndEditing(_ textView: UITextView) {
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tempActions.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ActionCell", for: indexPath) as! ActionCell
cell.label.text = tempActions[indexPath.row].title
cell.label.textContainerInset = UIEdgeInsets(top: 12, left: 0, bottom: 12, right: 0);
cell.label.delegate = self
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
tableview.estimatedRowHeight = 40
tableview.rowHeight = UITableView.automaticDimension
}
}
Заранее спасибо