Есть ли способ настроить увольнение?IOS

Программируем под IOS
Ответить
Anonymous
 Есть ли способ настроить увольнение?

Сообщение Anonymous »

Предположим, у меня есть предупреждение, подобное этому: < /p>

Код: Выделить всё

struct MyToastView: View {
@ViewBuilder let content: Content
@Binding var isPresented: Bool

var body: some View {
if isPresented {
VStack(alignment: .leading) {
content
}
.padding()
.background {
Rectangle()
.fill(.blue)
}
.transition(.opacity)
}
}
}

// This is very sloppy. It's just for MRE.

extension View {
func myToast(isPresented: Binding, @ViewBuilder content: () -> T) -> some View {
overlay {
MyToastView(content: content, isPresented: isPresented)
}
}
}
< /code>
Когда я называю эту функцию, я должен назвать ее так, если мне нужно ее отклонить: < /p>
.myToast(isPresented: $isPresented) {
ToastContents(isPresented: $isPresented)
}
Но с нативными функциями Swiftui, такими как лист , FullScreenCover , NavigatonStack ; Вы можете просто вызвать увольнение , используя @enviroment без непосредственного ввода Ispresentable и переключения его:

Код: Выделить всё

struct ToastContents: View {
@Environment(\.dismiss) var dismiss

var body: some View {
// ...
Button("close") {
dismiss()
}
}
}
< /code>
Когда я попытался это сделать, это дало мне ошибку по поводу того, что он не подходит для написания: < /p>
.enviroment(\.dismiss, .init()) // 🛑 Cannot convert value of type 'KeyPath' to expected argument type 'WritableKeyPath'
Но потом я понял, даже если бы я смог сделать это, увольнение не имела никаких доступных инициализаторов. И, насколько я знаю, у Swiftui нет метода с именем с названием «/Code>».>

Подробнее здесь: https://stackoverflow.com/questions/797 ... missaction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»