К этому добавляется никакущая документация на сайте Apple. Да, есть такая-то функция, а что она делает? А как её вызывать? Примеров-то нет в доках.
Вот почему в тот же PHP был такой низкий порог вхождения? Не только из-за простоты языка. А потому, что после описания функции тут же приводился пример работы, который можно было тупо скопировать из справки и перейти к следующей задаче.
Приходится гуглить название в надежде, что на stackoverflow попадётся рабочий пример.
Этот пост для тех, кто уже понял, как просто нарисовать на айфоне окно с кнопкой и надписью, но упёрся в некоторые неочевидные вещи. Что вспомню - напишу. Возможно, что буду добавлять потом новые пометки.
Да и мне самому пригодится.
Хорошие новости - на SwiftUI можно писать программы не только для айфонов и айпадов, но и для самого макбука и прочих устройств от Apple. Даже не меняя кода. Хочешь новое окно - создавай вьюху. Вьюхи - это типа activity на android. Создаются они просто: в xcode создаёшь новый файл и указываешь, что хочешь файлик типа swiftUI. А умный xcode сам уже вставит код, создающий новое окно. Этот код можно скопировать и, изменив имя вьюхи, вставить рядом.
Окно-вьюха из другого окна-вьюхи открывается либо при помощи sheet() или actionSheet(), либо при помощи NavigationLink, передав ей в параметр destination название вьюхи.
Есть некая инструкция "@State", которую пишут перед объявлением переменной. Например:
@State var flag:Bool = false
Если значение переменной flag изменится, то весь код отображения будет перестроен. Например, в эту переменную можно записать результат авторизации и, в зависимости от значения, показывать меню пользователя или окно авторизации.
Очень удобно, да. Но как быть, если нам надо вызвать некую функцию после изменения переменной? Для этого используем .onRecieve(), а именно, цепляем этого слушателя к главному элементу, передаём ему параметром имя отслеживаемой переменной, а в замыкании (в фигурных скобках) пишем вызов этой самой функции.
Более девяти вложенных элементов (кнопок, полей ввода, счётчиков, бегунков, переключателей и т.п.) внутри менеджера расположения элементов (типа VStack, HStack, Group и т.п.) добавить нельзя, компилятор будет ругаться. Это не фича, это изначальный баг, до сих пор не исправленный. К счастью, эти менеджеры можно вкладывать друг в друга без проблем.
Пока всё, вспомню что-то ещё, допишу.