Size: a a a

iOS Developers — русскоговорящее сообщество

2020 March 09

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Eugene Orekhin
Столкнулся с очень странным поведением UITableViewDelegate

Пример 1:
-> Insert 5 items
[0..<5], numberOfRowsInSection = 5

-> Insert 5 items
[0..<10], numberOfRowsInSection = 10

-> Insert 5 items
[0..<15], numberOfRowsInSection = 15

-> Delete 14 items
[0..<1], numberOfRowsInSection = 1

После этого UIKit запрашивает
heightForRowAt [0, 0] cellFoRowAt [0, 0]; heightForRowAt [0, 14] cellFoRowAt [0, 14]
и, соответственно, падает, так как в моделях лежит только 1 айтем

Что интересно, пример 2:
-> Insert 5 items
[0..<5], numberOfRowsInSection = 5

-> Insert 5 items
[0..<10], numberOfRowsInSection = 10

-> Delete 9 items
[0..<1], numberOfRowsInSection = 1

Здесь вызовы UITableViewDelegate отрабатывают корректно - запрашивает heightForRow [0, 0] и все

пробовал обернуть deleteRows(at: with:)  в .beginUpdates() .endUpdated() или performButchUpdates - безуспешно

Воспроизводится на симуляторе iOS 13, девайсе iOS12
Если всё, что ниже iOS 13 не интересует, то не заморачивайся и используй UITableViewDiffableDataSource
источник

EO

Eugene Orekhin in iOS Developers — русскоговорящее сообщество
Руслан Лутфуллин
Если всё, что ниже iOS 13 не интересует, то не заморачивайся и используй UITableViewDiffableDataSource
как раз интересует <iOS13
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Eugene Orekhin
как раз интересует <iOS13
Тогда попробуй сделать так и/или проверь, порядок:

1. оберни всё в performBatchUpdates(_:completion:)

2. если в пачке действий присутсвует как удаление так и вставка, то сначала нужно удалять.

3. удаление - всегда используй оригинальные индексы(те, что до изменений)

4. вставка - всегда используй измененные индексы(те, что после изменений)
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
тут тяжело что-то советовать. ищи баг в последовательности
источник

КВ

Кирилл Варшамов in iOS Developers — русскоговорящее сообщество
Всем привет, подскажите пожалуйста.
Когда первый раз загружаю изображение, то могу задать ему имя, но когда загружаю повторно это же изображение, то имя не задаётся. То же самое и с другими изображениями.
источник

КВ

Кирилл Варшамов in iOS Developers — русскоговорящее сообщество
источник

EO

Eugene Orekhin in iOS Developers — русскоговорящее сообщество
Руслан Лутфуллин
Тогда попробуй сделать так и/или проверь, порядок:

1. оберни всё в performBatchUpdates(_:completion:)

2. если в пачке действий присутсвует как удаление так и вставка, то сначала нужно удалять.

3. удаление - всегда используй оригинальные индексы(те, что до изменений)

4. вставка - всегда используй измененные индексы(те, что после изменений)
для чистоты нет одновременных вставок / удалений.
3 и 4 пункт распиши пожалуйста поподробней, может в этом дело. Но почему тогда пример 2 работает как надо 🤔
источник

S

Stanislav in iOS Developers — русскоговорящее сообщество
Кирилл Варшамов
Всем привет, подскажите пожалуйста.
Когда первый раз загружаю изображение, то могу задать ему имя, но когда загружаю повторно это же изображение, то имя не задаётся. То же самое и с другими изображениями.
У тебя же ещё не выполнилась строчка после бряка
источник

КВ

Кирилл Варшамов in iOS Developers — русскоговорящее сообщество
Stanislav
У тебя же ещё не выполнилась строчка после бряка
это я скрин в торопях с кинул, тоже самое
источник

КВ

Кирилл Варшамов in iOS Developers — русскоговорящее сообщество
я не один раз это проверил, если что :)
источник

S

Stanislav in iOS Developers — русскоговорящее сообщество
источник

КВ

Кирилл Варшамов in iOS Developers — русскоговорящее сообщество
Спасибо большое, помогло
источник
2020 March 10

ММ

Марк Москаленко in iOS Developers — русскоговорящее сообщество
Доброй ночи, если есть кто на связи) Подскажите плиз.
Пытаюсь подключить https://github.com/marcosgriselli/SwipeableTabBarController
источник

ММ

Марк Москаленко in iOS Developers — русскоговорящее сообщество
Падает
источник

ММ

Марк Москаленко in iOS Developers — русскоговорящее сообщество
Или
источник

ММ

Марк Москаленко in iOS Developers — русскоговорящее сообщество
Может из-за того что у меня swift 5
источник

D

David in iOS Developers — русскоговорящее сообщество
Ivan Gaydamakin
А почему ты делаешь через mainRunLoop?
чтоб толеранс выставить
источник

A

Adv0cat in iOS Developers — русскоговорящее сообщество
Denis Kim
как раз делаю чтото похожее, должно получиться типа такого
Ну кстати, если вдруг бек нужен под ваш плеер, или еще чего серверного, бд мож какую - могу подсобить по возможности, как раз увлекаюсь тут мальца этим 😊
источник

FM

Fr Mr in iOS Developers — русскоговорящее сообщество
Делаю две цветовые схемы
источник

FM

Fr Mr in iOS Developers — русскоговорящее сообщество
Для Сolor все норм работает
источник