Это происходит потому, что ячейки таблицы используются повторно, поэтому, когда вы прокручиваете вверх, они очищаются и повторно используются по приведенным ниже данным, а когда вы поднимаетесь снова, все происходит снова.
Относительно проверки во второй раз.
Просто сохраните индекс строки в NSUserDefault
и поместите условие в cellForRowAtIndexPath
, чтобы при совпадении индекса сохранять его отмеченным.
Надеюсь, это поможет ..
СЧАСТЛИВОЕ КОДИРОВАНИЕ ...