Ячейки TableView повторяются / дублируются - PullRequest
0 голосов
/ 29 июня 2019

Так что в настоящее время я работаю над проектом Swift для университета.Он имеет TableView, который должен иметь 10 ячеек, так как мой массив данных имеет 10 индексов.Я могу настроить приложение, все отлично работает, кроме того, что после 10 записей весь набор данных повторяется, начиная с 1-й до последней записи ... Вот как выглядит проблема. .(TableData - это массив, который содержит данные для ячеек)

override func numberOfSections(in tableView: UITableView) -> Int {
    return tableData.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return tableData.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "locationCell", for: indexPath)

    let mapLocation = tableData[indexPath.row]
    cell.textLabel?.text = mapLocation.name
    return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    selectedLocation = tableData[indexPath.row]
    performSegue(withIdentifier: "fromTableToMap", sender: selectedLocation)
}

Ответы [ 4 ]

0 голосов
/ 29 июня 2019

Просто удалите метод numberOfSections из своего кода, по умолчанию он займет один раздел для tableView.

0 голосов
/ 29 июня 2019

Используйте это.

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
0 голосов
/ 29 июня 2019

Вам не хватает основных понятий UITableView. TableView состоит из одного или нескольких разделов. Каждый раздел состоит из одной или нескольких ячеек.

override func numberOfSections(in tableView: UITableView) -> Int {
    return tableData.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return tableData.count
}

это означает, что вы используете 10 в качестве разделов, каждый из которых имеет 10 строк. Таким образом, он возвращает 10 * 10 = 100 ячеек (вы можете рассчитывать вручную)

должно быть

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return tableData.count
}

теперь вы используете 1 в качестве разделов, каждый из которых имеет 10 строк. Таким образом, он возвращает 1 * 10 = 10 ячеек (вы можете рассчитывать вручную)

0 голосов
/ 29 июня 2019

У вас есть

override func numberOfSections(in tableView: UITableView) -> Int {
    return tableData.count
}

Заменить на

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

В противном случае вы повторяете свои 10 строк 10 раз (чтобы сделать 10 секций), в результате чего получается 100 строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...