我正在尝试将CoreData中的数据读取到自定义单元格中。在尝试移至我一直在研究的真实应用之前,这只是一个测试应用。数据在那里-我可以将其打印到控制台并查看。由于某些原因,即使有约束,所有数据也会在单元中彼此重叠。谁能看到这是怎么回事?
我已经创建了约束以将单元格保留在应有的位置,但是当从“显示数据”按钮加载数据时,数据会相互放置。
这是我的自定义单元格类:
import UIKit
class CustomCellClass: UITableViewCell {
@IBOutlet weak var txtNameLabel: UILabel!
@IBOutlet weak var txtAgeLabel: UILabel!
}
这是ShowData类:(部分)
class ShowData: UIViewController, NSFetchedResultsControllerDelegate {
@IBOutlet weak var personTableView: UITableView!
let appDelegate = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var personData = [Person]()
// Read the data
override func viewDidLoad() {
super.viewDidLoad()
personTableView.delegate = self
personTableView.dataSource = self
loadItems()
}
func loadItems() {
let request : NSFetchRequest<Person> = Person.fetchRequest()
do {
personData = try appDelegate.fetch(request)
} catch {
print("couldn't load")
}
}
}
extension ShowData : UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return personData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let person = personData[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "personNameAge", for: indexPath) as! CustomCellClass
cell.txtNameLabel?.text = person.name
cell.txtAgeLabel?.text = String(person.age)
return cell
}
编辑:
我刚刚从模拟器中删除了该应用,然后尝试重新运行-现在,单元格中没有任何数据。
答案 0 :(得分:1)
仅是为了向其他读者说明,如您的屏幕快照所示,表中的行如预期的那样是分开的,但是每个单元格中的不同字段(可能称为列,彼此重叠。
您说您已经创建了约束来将单元格保持在应有的位置,我不确定您的意思是什么。您需要的是每个单元格中的字段的约束-我称之为单元内约束。您可能尚未添加这些约束,或者它们存在错误,导致所有字段都在左侧绘制。
为了展示您的意思,让我们以我的一个小型锻炼应用程序为例,该应用程序在每个表格单元格中从左到右都有一个 Perform 按钮,一个 Edit 按钮,名称字段和 Duration 字段。下面的屏幕截图在黄色的大框中显示了单元内约束。如果您使用的是情节提要,则应用程序问题一定在该区域。如果您不使用情节提要,则问题可能出在等效代码中(或缺少等效代码)。
答案 1 :(得分:0)
只是让大家知道。问题已解决。我从项目中删除了表视图单元格,读取并读取了约束。现在一切正常。我不确定问题出在哪里,但我发现发生了奇怪的包裹。我将其中一个标签移到单元格的另一侧,然后将其限制在右侧,将另一标签限制在左侧。当我运行该应用程序时,文本似乎自动换行。我决定删除单元格,然后阅读并重新链接我的网点。它是第一次工作...