Текст перемешан в пользовательской ячейке - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь прочитать данные из 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

    }

Вот скриншот таблицыво время работы: enter image description here

Редактировать :

Я просто удалил приложение из симулятора и попытался перезапустить - теперь нетлюбые данные в ячейках.

Storyboard Constraints Storyboard for ShowData Class

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Просто чтобы прояснить для других читателей, как видно на скриншоте, строки в вашей таблице разделены, как и ожидалось, но разные поля в каждой ячейке, что можно назвать столбцами , друг на друга.

Вы говорите, что создали ограничения, чтобы держать ячейки там, где они должны быть , я не уверен, что вы подразумеваете под этим. Вам нужны ограничения для полей в каждой ячейке - то, что я называю внутрисотовые ограничения . Либо вы не добавили эти ограничения, либо в них есть ошибка, из-за которой все поля отображаются слева.

Чтобы показать вам, что я имею в виду, давайте возьмем пример моего небольшого приложения для тренировки, в котором в каждой ячейке таблицы слева направо есть кнопка Perform и Edit * Кнопка 1016 *, поле Имя и поле Длительность . Снимок экрана ниже показывает в большом желтом поле внутрисотовые ограничения. Если вы используете раскадровку, проблема с вашим приложением должна быть в этой области. Если вы не используете раскадровку, проблема должна заключаться в эквивалентном коде (или его отсутствии).

enter image description here

0 голосов
/ 28 апреля 2019

Просто, чтобы все знали.Проблема решена.Я удалил ячейку табличного представления из проекта, прочитал и прочитал ограничения.Все работает сейчас.Я не уверен, где была проблема, но я заметил, что у меня происходит странная упаковка.Я переместил одну из меток на другую сторону ячейки и ограничил ее правой стороной, а другую - левой стороной.Когда я запустил приложение, появился текст с переносом слов.Я решил удалить ячейку, перечитал и заново связал свои розетки.Сработало в первый раз ...

...