Size: a a a

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

2021 March 24

NK

Nameless King in iOS Developers — русскоговорящее сообщество
David
привет! кто подскажет пример как в SwiftUI в списке List при нажатии на Item обновить его текст (типо как в UIKit обновить массивчик и reloadData() ).
SwiftUI он как бы не про императивный стейт…
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
а про то, что всё само обновляется, например onAppear { … }
источник

D

David in iOS Developers — русскоговорящее сообщество
Nameless King
SwiftUI он как бы не про императивный стейт…
это понятно, но есть примерчик, весь стак облазил не нашел. Много про добавление Item и это работает, но вот обновлять ни в какую
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
David
это понятно, но есть примерчик, весь стак облазил не нашел. Много про добавление Item и это работает, но вот обновлять ни в какую
дак а что именно обновлять? лист рисует сразу как получил данные
обновлять текст? ну закидываем его в State, если использовать тот же MVVM то как только данные меняются, VM уведомляет View об этом и он моментально отрисовывает
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
не будет там кнопки обновить, я же говорю, это не декларативный подход
если надо обновлять руками, значит не надо писать декларативно
приведите пример, когда мне бы понадобилось лишнее действие совершать и "обновлять" что то?
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
можно просто скрыть текст, а при нажатии его показать
источник

D

David in iOS Developers — русскоговорящее сообщество
Nameless King
дак а что именно обновлять? лист рисует сразу как получил данные
обновлять текст? ну закидываем его в State, если использовать тот же MVVM то как только данные меняются, VM уведомляет View об этом и он моментально отрисовывает
ну у меня есть напрмер var names:[String] этот массив я вывожу с помощью List. Внутри есть кнопка names[i] = "updated text"
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
David
ну у меня есть напрмер var names:[String] этот массив я вывожу с помощью List. Внутри есть кнопка names[i] = "updated text"
@State var names: [String]
источник

D

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

D

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

D

David in iOS Developers — русскоговорящее сообщество
теперь просит Identifiable
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
David
теперь просит Identifiable
@State var names = ["1", "2", "3"]
   var body: some View {
       List(names, id: \.self) { name in
           Button(action: {
               names[1] = "0"
           }, label: {
               Text(name)
           })
       }
   }
источник

NK

Nameless King in iOS Developers — русскоговорящее сообщество
главное про @State не забывай, иначе он не будет понимать что нужно отрисовать по новой, при обновлении данных
источник

D

David in iOS Developers — русскоговорящее сообщество
спасибо! отлично, а я уже наворотил всякого кода... Один последний вопрос. Как вместо names[1] указать номер row? Чтобы обновлял именно тот Item на который нажал
источник

D

David in iOS Developers — русскоговорящее сообщество
оказывается есть indicies
источник

D

David in iOS Developers — русскоговорящее сообщество
супер спасибо!
источник

NK

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

MD

Maxud Daudov in iOS Developers — русскоговорящее сообщество
хунтер
Подскажите есть ли способ сделать релоуд ячейки и передвинуть ее в другое место с анимацией? У коллекции есть метод moveItem(at:to:), и reloadIndexPathes, но если делать их вместе в performButchUpdate, то падает с ошибкой что пытаюсь переместить и удалить одну и ту же ячейку. Есть какие-то способы не через костыли сделать и то и другое?
Вызывай reload в completion блоке butchupdate
источник

6

6464 in iOS Developers — русскоговорящее сообщество
that's way too vague
источник

х

хунтер in iOS Developers — русскоговорящее сообщество
Maxud Daudov
Вызывай reload в completion блоке butchupdate
Спасибо
источник