Swift 文本在自定义单元格中混乱

Swift 文本在自定义单元格中混乱,swift,uitableview,core-data,cell,Swift,Uitableview,Core Data,Cell,我正在尝试将CoreData中的数据读取到自定义单元格中。这只是一个测试应用,在我尝试移动到我一直在开发的真实应用之前。数据就在那里-我可以将其打印到控制台并查看它。出于某种原因,即使有约束,所有数据也会在单元格中彼此重叠。有人知道这是怎么回事吗 我已经创建了约束来保持单元格的位置,但是当数据从我的“显示数据”按钮加载时,数据会被放置在彼此的顶部 这是我的自定义单元格类: import UIKit class CustomCellClass: UITableViewCell {

我正在尝试将CoreData中的数据读取到自定义单元格中。这只是一个测试应用,在我尝试移动到我一直在开发的真实应用之前。数据就在那里-我可以将其打印到控制台并查看它。出于某种原因,即使有约束,所有数据也会在单元格中彼此重叠。有人知道这是怎么回事吗

我已经创建了约束来保持单元格的位置,但是当数据从我的“显示数据”按钮加载时,数据会被放置在彼此的顶部

这是我的自定义单元格类:


import UIKit

class CustomCellClass: UITableViewCell {


    @IBOutlet weak var txtNameLabel: UILabel!
    @IBOutlet weak var txtAgeLabel: UILabel!



}
以下是ShowData类:(部分)


类ShowData:UIViewController、NSFetchedResultsControllerDelegate{
@ibvar personTableView:UITableView!
让appDelegate=(UIApplication.shared.delegate为!appDelegate)。persistentContainer.viewContext
变量personData=[Person]()
//读取数据
重写func viewDidLoad(){
super.viewDidLoad()
personTableView.delegate=self
personTableView.dataSource=self
loadItems()
}
func loadItems(){
let请求:NSFetchRequest=Person.fetchRequest()
做{
personData=try-appDelegate.fetch(请求)
}抓住{
打印(“无法加载”)
}
}
}
扩展名ShowData:UITableViewDataSource、UITableViewDelegate{
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
return personData.count
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
让person=personData[indexPath.row]
让cell=tableView.dequeueReusableCell(标识符为:“personNameAge”,用于:indexPath)作为!CustomCellClass
cell.txtnamelab?.text=person.name
cell.txtagelab?.text=字符串(person.age)
返回单元
}
以下是运行时tableview的屏幕截图:

编辑:

我刚刚从模拟器中删除了应用程序,并尝试重新运行-现在单元格中没有任何数据


为了向其他读者澄清,正如您的屏幕截图所示,表中的行按预期分开,但每个单元格中的不同字段(可以称为列)位于彼此的顶部

您说您创建了约束以保持单元格的位置不变,我不确定您的意思。您需要的是每个单元格内字段的约束–我称之为单元格内约束。您没有添加这些约束,或者这些约束中存在错误,导致所有字段都绘制在左侧

为了向您展示我的意思,让我们以我的一个小健身应用程序为例,它在每个表格单元格中从左到右都有一个执行按钮、一个编辑按钮、一个名称字段和一个持续时间字段。下面的屏幕截图在黄色大框中显示了单元格内的约束。如果您使用的是故事板,应用程序的问题一定是我如果你没有使用故事板,问题一定出在等价的代码中(或者没有)


只是想让大家知道。问题已经解决。我从项目中删除了“表视图”单元格,读取并读取了约束。现在一切正常。我不确定问题出在哪里,但我注意到出现了奇怪的包装。我将其中一个标签移到了单元格的另一侧,并将其约束到了右侧,另一个在左边。当我运行应用程序时,文本似乎是自动换行的。我决定删除单元格,读取并重新链接我的插座。它第一次起作用了…

删除应用程序并重新安装,给你留下了新的数据副本。“乱码”由于不正确的约束,文本只是重叠标签。现在您已经编辑了问题并添加了单元格内约束的屏幕截图,正如我在回答中所解释的,我认为问题很明显:您的Txt名称标签和Txt年龄标签都有一个前导+15的.leading约束。其中一个应该有一个.leading constrint依赖于另一个,如在我的回答中。例如,在我的回答中,EditButton.leading=PerformButton.Training。或者其中一个应该固定在前缘,另一个固定在后缘。谢谢Jerry!我添加了约束屏幕截图。我已经列出了上面列出的所有内容。我目前没有在表中看到任何数据那一刻,我不明白为什么它似乎没有被添加到单元格中。好吧,rmaddy是正确的。我添加了新数据,我又得到了乱七八糟的数据。

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

    }