TableView не показывает мои данные из области - PullRequest
0 голосов
/ 24 августа 2018

У меня есть одна проблема: мой tableView не показывает никаких данных из базы данных области. Но я думаю, проблема в клетке.

class ClientViewController: UITableViewController {

    @IBOutlet var table: UITableView!
    var clientsInfo: Results<Client> {
        get {
            return realm.objects(Client.self)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.register(myCell.self, forCellReuseIdentifier: "cell")
        table.delegate = self
        table.dataSource = self
        table.reloadData()
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: myCell.reuseIdentifier, for: indexPath) as! myCell
        let info=clientsInfo[indexPath.row]
        cell.todoLabel.text = info.firstName
        return cell

    }
}

class myCell: UITableViewCell {
    @IBOutlet weak var label: UILabel!

    static let reuseIdentifier = "cell"


    @IBOutlet weak var todoLabel: UILabel!

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

    }
} 

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

В вашем коде есть несколько ошибок:

Первое:

Вы используете UITableViewController, по умолчанию это уже имеет tableView, так что выне нужно объявлять новый tableView, как вы это сделали

@IBOutlet var table: UITableView!

Second:

В вашем viewDidLoad вы регистрируете ячейку для стандартного tableView и используетеВаша объявленная таблица для источника данных и делегата, это не будет работать.Я рекомендую вам удалить созданную вами таблицу и использовать ее по умолчанию, чтобы ваш viewDidLoad выглядел так:

override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.register(myCell.self, forCellReuseIdentifier: "cell")
        self.tableView.delegate = self
        self.tableView.dataSource = self
    }

и третий:

вы пропустили реализациюиз:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
0 голосов
/ 27 августа 2018

В этом коде вы забыли реализовать метод tableView(numberOfRowsInSection:), поэтому он возвращает 0 по умолчанию, а ваш метод tableview(cellForRowAt:) никогда не вызывался.

И

Может, дело не в твоем вопросе, а;

Вы использовали UITableView переменную (имя таблица ) в UITableView. Это не нужно, потому что UITableView уже имеет UITableView (имя tableView ). И вы зарегистрировали свою ячейку в tableView , но, похоже, вы пытаетесь удалить эту ячейку из table .

...