文字在自定义单元格中混乱

时间:2019-04-28 02:02:35

标签: swift uitableview core-data cell

我正在尝试将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

    }

这是运行时tableview的屏幕截图: enter image description here

编辑

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

Storyboard Constraints Storyboard for ShowData Class

2 个答案:

答案 0 :(得分:1)

仅是为了向其他读者说明,如您的屏幕快照所示,表中的如预期的那样是分开的,但是每个单元格中的不同字段(可能称为,彼此重叠。

您说您已经创建了约束来将单元格保持在应有的位置,我不确定您的意思是什么。您需要的是每个单元格中的字段的约束-我称之为单元内约束。您可能尚未添加这些约束,或者它们存在错误,导致所有字段都在左侧绘制。

为了展示您的意思,让我们以我的一个小型锻炼应用程序为例,该应用程序在每个表格单元格中从左到右都有一个 Perform 按钮,一个 Edit 按钮,名称字段和 Duration 字段。下面的屏幕截图在黄色的大框中显示了单元内约束。如果您使用的是情节提要,则应用程序问题一定在该区域。如果您不使用情节提要,则问题可能出在等效代码中(或缺少等效代码)。

enter image description here

答案 1 :(得分:0)

只是让大家知道。问题已解决。我从项目中删除了表视图单元格,读取并读取了约束。现在一切正常。我不确定问题出在哪里,但我发现发生了奇怪的包裹。我将其中一个标签移到单元格的另一侧,然后将其限制在右侧,将另一标签限制在左侧。当我运行该应用程序时,文本似乎自动换行。我决定删除单元格,然后阅读并重新链接我的网点。它是第一次工作...