【发布时间】:2020-08-02 17:37:19
【问题描述】:
在通过 textView 添加一行后,我需要 tableView 执行 reloadData()。我的 tableViews 都使用了可以正常工作的可重用代码。 下面是我的可重用 TableViewCode。
class ReusableSubtitleTable: NSObject, UITableViewDataSource, UITableViewDelegate{
let cell = "cell"
var dataArray = [String]()
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) {
print("DataArray count from table view = \(dataArray.count)")
return dataArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let selfSizingCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SelfSizingCell
let num = indexPath.row
selfSizingCell.titleText.text = (stepText[num])
selfSizingCell.subtitleText.text = dataArray[num]
return selfSizingCell
}
}
下面的函数使用可重用代码来显示工作正常的表格。
class DetailViewController: UIViewController {
let step = 13
var tableView: UITableView!
let dataSource = ReusableSubtitleTable()
var selectedEntry: JournalEntry!
var dataModel = [String]()
var didSave = false
var coreDataManager = CoreDataManager()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = dataSource
tableView.dataSource = dataSource
dataSource.dataArray = dataModel
@IBAction func unwindToDetail( _ sender: UIStoryboardSegue) {
dataModel[10] = step11
didSave = coreDataManager.updateEntry(step11: step11, selectedEntry: selectedEntry)
}
}
当用户想要添加到最后一行时,问题就出现了。用户点击一个按钮并被带到下一个控制器,即 TextView。当用户完成他们的输入时,他们点击“保存”按钮,该按钮通过展开返回到 DetailViewController。保存 selectedEntry 并更新 dataModel。现在表格视图需要重新加载以显示此添加的文本。
我尝试在 didSave 之后添加 tableView.ReloadData()。我尝试了 Dispatch 并尝试在通过展开从 textView 返回之前保存数据,但这也不起作用。
我尝试将以下函数添加到 ReusableTableView 并在 coredata 更新后调用它 - 没有错误但它不会重新加载表。
func doReload(){
tableView.reloadData()
}
我已验证数据已保存,如果我返回摘要控制器然后继续 DetailViewController,它确实会显示。
感谢任何帮助。
【问题讨论】:
标签: ios swift uitableview code-reuse