185 похожих чатов

А нормального способа сначала загрузить данные, а потом построить вью

- нема?

8 ответов

14 просмотров

В приложении понятней и проще со спиннером. А вообще if data { View() } else { EmptyView().task { } }

На SwiftUI отлично Statemachine натягивается и MVI подцепить. View может без проблем содержать сколько угодно View (я не про Body, а про sub типы, которые вообще можно спрятать и не париться - на перфомансе не скажется) просто их разбить по функциям, например одна качает и после загрузки показывает другую. Или наследование через протоколы с логикой тоже можно прицепить. Сделайте какой нибудь LazyView протокол, соответствующий View, в нем реализуйте логику для body и от него уже создавайте ваши View. Т.е. для всех View, которые ждут чего-то там, использовать LazyView который уже занимается показом. Что показывать определить через associatedtype и т.д. В общем вариантом нормально сделать вагон и маленькая тележка. __ Ну и субъективно. schedule.load() не зона ответственности View которое содержит ScheduleView, если нужны данные в родителе, то принимать готовенькое от него, а не прокидывать модель. Либо данные, либо родитель ничего не знает, так избежите проблем. TabView лучше не использовать, он тормозной и тянет все View

Антон-Romanov Автор вопроса
葉戈爾 Егор Олегович
На SwiftUI отлично Statemachine натягивается и MVI...

спасибо за развернутый ответ. по поводу табвью: есть готовые альтернативы для навбара снизу или имеете в виду, что лучше свое реализовать?

Антон Romanov
спасибо за развернутый ответ. по поводу табвью: ес...

Я на самом деле зацепился за больное т.к. уже обжигался, потом сделал обертку UIPageViewController для SwiftUI. Так и таскал ее из проекта в проект копипастом. Потом разродился и сделал пакет (криво-косо, но работало) и как раз сейчас я взялся за этот пакет и делаю его. Отсюда для меня TabView как бельмо на глазу, тряпка для быка если хотите. Я увидел Ваш скрин и у меня триггер сработал. Ну т.е. это все же мое субъективное мнение. Почему я считаю его кривым? Он не освобождает View и если просмотров много, то это все приводит к нормальным тормозам, в Вашем случае, если представлений не много, можно особо не переживать, так уж я, нагнетаю 🙂

Антон-Romanov Автор вопроса
葉戈爾 Егор Олегович
На SwiftUI отлично Statemachine натягивается и MVI...

с зонами ответственности я путаюсь, потому что не могу сообразить, как тут лучше вообще писать в плане архитектуры. вариантов много: вроде кто-то говорит, что лучше мв, кто-то мввм, кто-то еще что посложнее предлагает. можете, пожалуйста, подсказать: вот у меня есть моделька с расписанием. есть вьюха, в которой она используется. у меня вроде как есть варианты: добавить в эту модель что-то по типу метода load (чтобы при загрузке оно заполняло поля уроками); сделать какой-нибудь SheduleService, пропихивать его во вью как синглтон, и в нем дергать метод, возвращающий модель; или может еще что?

Антон-Romanov Автор вопроса
葉戈爾 Егор Олегович
Я на самом деле зацепился за больное т.к. уже обжи...

ну да, у меня тут достаточно мало всего, думаю проблем не будет, но на будущее учту, спасибо

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта