Возможно ли выбрать tableViewRow по ID, а не по индексу?

swift3

#1

В курсе по созданию приложения с ресторанами проверку нажатия на конкретный row в таблице делают по индексу


У меня возник вопрос, если, например, в будущем изменится дизайн и этот row станет не первым по счету, а вторым или третим, то при каждом изменении порядка нужно будет менять и код в этой проверке - это не универсально.
Есть ли какой-то способ проверять куда нажал пользователь не по индексу, а например, по какому-нибудь ID элемента, который был бы всегда неизменным?

Заранее спасибо :slight_smile:


#2

есть у тебя допустим список [1, 2, 3], да, и ты хочешь вкорячить допустим сверху погоду что бы показывало, и ты думаешь щас я вкорячу быстренько в тот же список и будет [погода, 1, 2, 3], и тогда у 1 будет indexPath.row == 1, хотя по логике должен быть 0, так как погода это не часть списка. и что же делать? - использовать секции, и тогда будет так [погода][1, 2, 3], и тогда у ячейки 1 будет indexPath.row == 0, красота

и если увидишь, что кто то вкорячивает погоду в тот же список, бей его в лицо, потому что есть секции для этого.

казалось бы, что страшного, всего лишь 1 погода, но потом хочется вставлять еще и еще, и вот таблица уже выглядит так [пробки, погода, 1, 2, nextPage, 3, что то еще ], а в cellForRowAt творится настоящая магия из говна и палок


#3

Круто объяснил, спасибо! :slight_smile:

Но вопрос все равно может быть актуален, когда элемент в этой же секции меняет свое положение. Например UX/UI специалист сказал, что этот элемент тут вообще стал не нужен он только мешает пользователям, давай его удалим. Ты удаляешь его и все индексы, которые были после у тебя сдвигаются на единицу… печалька :frowning:


#4

https://developer.apple.com/reference/uikit/uiview/1622493-tag


#5

То что нужно, спасибо!