почему index.row пересчитывается при прокрутке таблицы - PullRequest
0 голосов
/ 27 мая 2018

Здесь я хочу использовать index.row для индексации массива, но странно то, что index.row перезапустится при прокрутке tableView.Есть ли какое-нибудь решение?или другой способ индексировать массив?

Как показано ниже:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
4 #recount from 4
5
6
7
8
9
10

Вот исходный код:

func tableviewSetUp() {
    let rect = self.view.frame
    self.tableView = UITableView(frame: rect)
    self.tableView.backgroundColor = UIColor.black
    self.tableView.delegate = self
    self.tableView.dataSource = self
    self.view.addSubview(self.tableView)
    self.tableView.register(WallpaperTableViewCell.self, forCellReuseIdentifier: "wallpaperCell")
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "wallpaperCell", for: indexPath) as! WallpaperTableViewCell
    print(indexPath.row)  //here I print the row number
    let wallpaper = self.wallpaperIDList[indexPath.row]//here I using the index.row to index the array
    return cell
}
func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 50
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

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

0 голосов
/ 27 мая 2018

Табличные представления будут вызывать свои методы источника данных так, как они считают нужным.Вы не должны делать никаких предположений относительно того, какие IndexPath будут переданы в tableView(cellForRowAt:).Просто верните клетки, когда их попросят.

Если он дважды запрашивает строку 4, дважды укажите строку 4.

Вы ДОЛЖНЫ использовать массив в качестве модели данных.Это очень хороший способ представления данных для одного представления таблицы разделов.Тот факт, что табличное представление дважды запрашивает строку с индексом 4, это не меняет.(или используйте массив массивов для представления секционированной таблицы.)

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