Мне кажется, что вы ответили на свой вопрос: вы не можете. Поскольку ячейка не имеет indexPath при выполнении viewDidLoad. И на самом деле, у него также нет ни одной более поздней, потому что та же самая ячейка может быть повторно использована, чтобы быть с другим индексом в течение одной десятой секунды, если вы используете вытеснение ячейки (хорошее слово!), Что вам и следует.
РЕДАКТИРОВАТЬ: Хорошо, я думаю, что я вижу, что вы хотите: вы сами сохраняете indexPath где-то, когда вы передаете ячейку в tableView. Примечание: если вы этого не сделаете, вы не сможете точно узнать, в каком indexPath расположена конкретная ячейка, по крайней мере, если вы делаете вещи так, как должны.
Итак, вы можете просто создать все ячейки в вашем методе viewDidLoad, сохранить их в массиве, а затем, когда их запросит табличное представление, просто передать их из этого массива.
Обратите внимание, что это не очень хороший способ заполнения табличного представления, поскольку он предотвращает повторное использование ячеек. Лучшим способом было бы сохранить содержимое ячеек (простые UIViews) в массиве и добавить их как дочерние элементы в представление содержимого ячейки перед возвратом ячейки. Это позволило бы повторно использовать ячейки, что крайне важно для хорошей производительности. Если у вас больше ячеек, чем умещается на экране, вам не нужно беспокоиться о их повторном использовании.