Главное, что нужно понять, это то, что ячейки вашего стола используются повторно.Это сделано для увеличения производительности при прокрутке, потому что создание новой ячейки - это представление - довольно дорого.
В методе cellForRowAtIndexPath вы возвращаете ячейку.Либо существующая ячейка с использованием метода dequeue, либо вы создаете новую.В этой ячейке вы устанавливаете все свойства того, что вы хотите представить.
Я предполагаю, что вы устанавливаете эти свойства, такие как изображение и т. Д., Непосредственно в ячейку.Затем, когда вы прокручиваете, эта ячейка используется повторно, и вы снова видите то же изображение, но не в той ячейке.
Итак, вам нужен отдельный индекс, такой как NSArray для поддержки объектов вашей модели.Этот объект модели содержит все детали изображения и т. Д.
Давайте рассмотрим пример.У меня есть массив с 10 объектами, первые пять из которых являются image "a.png", а вторые пять "b.png".
Если я получаю обратный вызов cellForRowAtIndexPath, я хочу сделать следующим образом:
cellForRowAtIndexPath: (0,0) предоставить объекту из массива индекс 0, который является a.png cellForRowAtIndexPath: (0,1) предоставить объекту из массива индекс 1, который является a.pngcellForRowAtIndexPath: (0,2) предоставляет объект из массива с индексом 2, который является a.png cellForRowAtIndexPath: (0,3) предоставляет объект из массива с индексом 3, а a.png cellForRowAtIndexPath: (0,4) предоставляет объект измассив с индексом 4, который представляет собой a.png cellForRowAtIndexPath: (0,5) предоставляет объект из массива с индексом 5, который является b.png cellForRowAtIndexPath: (0,6) предоставляет объект из массива с индексом 6, который является b.pngcellForRowAtIndexPath: (0,7) предоставляет объект из массива с индексом 7, который является b.png cellForRowAtIndexPath: (0,8) предоставляет объект из массива с индексом 8, а b.png cellForRowAtIndexPath: (0,9) предоставляет объект измассив индекс 9, которыйis b.png
Теперь давайте рассмотрим, что в UITableView, под крышками, пять ячеек используются повторно.
Для каждого вышеуказанного вызова происходит следующее:
cellForRowAtIndexPath: (0,1) предоставляет объекту из массива индекс 1, который является a.png - вы пытаетесь удалить из очередисуществующая ячейка, но она возвращается "ноль", поэтому вы создаете новую ячейку.Вы устанавливаете детали вашего объекта модели.
cellForRowAtIndexPath: (0,2) предоставляет объекту из массива индекс 2, который является a.png - вы пытаетесь удалить из очереди существующую ячейку, но она возвращается "nil"«Итак, вы создаете новую ячейку.Вы устанавливаете детали вашего объекта модели.
cellForRowAtIndexPath: (0,3) предоставляет объекту из массива индекс 3, который является a.png - вы пытаетесь удалить из очереди существующую ячейку, но она возвращается "nil"«Итак, вы создаете новую ячейку.Вы устанавливаете детали вашего объекта модели.
cellForRowAtIndexPath: (0,4) предоставляет объекту из массива индекс 4, который является a.png - вы пытаетесь удалить из очереди существующую ячейку, но она возвращается "ноль"«Итак, вы создаете новую ячейку.Вы устанавливаете детали вашего объекта модели.
cellForRowAtIndexPath: (0,5) предоставляет объекту из массива индекс 5, который является b.png - вы пытаетесь удалить из очереди существующую ячейку, и она работает!Вы можете использовать эту ячейку снова, установив детали объекта вашей модели
cellForRowAtIndexPath: (0,6) предоставить объект из массива с индексом 6, который является b.png - вы пытаетесь удалить из очереди существующую ячейку ионо работает!Вы можете использовать эту ячейку снова, установив детали объекта вашей модели
cellForRowAtIndexPath: (0,7) предоставить объект из массива с индексом 7, который является b.png - вы пытаетесь удалить из очереди существующую ячейку ионо работает!Вы можете использовать эту ячейку снова, установив детали объекта вашей модели
cellForRowAtIndexPath: (0,8) предоставить объект из массива с индексом 8, который является b.png - вы пытаетесь удалить из очереди существующую ячейку ионо работает!Вы можете использовать эту ячейку снова, установив детали вашего объекта модели
cellForRowAtIndexPath: (0,9) предоставить объект из массива с индексом 9, который является b.png- вы пытаетесь удалить существующую ячейку из очереди, и она работает!Вы можете использовать эту ячейку снова, установив детали вашего модельного объекта
Извините, что вы так многословны!Надеюсь, это поможет.Может быть, стоит поработать над хорошим руководством по просмотру таблицТам наверняка будет много.