Заставляя вид SwiftUI исчезать

#swiftui

Вопрос:

Хороший день.

Есть ли способ заставить дочернее представление, вызываемое из родительского представления, исчезнуть, если, скажем, условие bool верно? Я хочу, чтобы он полностью исчез, а не был скрыт с помощью непрозрачности, скрыт и т. Д.

Я хочу знать, возможно ли это, спасибо!

Комментарии:

1. Вы можете показать свой код?

2. Прямо сейчас у меня нет никакого конкретного кода, который можно было бы показать 🙂 Я просто хотел гипотетически узнать, существует ли такая вещь в SwiftUI, потому что после моих исследований в Google я смог найти только способ скрыть представление, а не заставить его исчезнуть. Но идея в том, что я хочу, чтобы childView (), который я вызываю в ContextView (), исчез после нажатия кнопки, и есть условие bool, которое устанавливается в значение true при нажатии кнопки.

3. Ах, хорошо, проверьте мой ответ. Это должно помочь.

Ответ №1:

В SwiftUI вы можете условно показать вид, подобный…

 if someCondition {  YourConditionalView() }  

Это покажет это представление только в том случае, если someCondition оно истинно.

Из вашего комментария…

 struct YourView: View {  @State var showView = true   var body: some View {  VStack {  if showView {  Text("Hello there!")  }   Button {  self.showView.toggle()  } label: {  Text("Press me")  }  }  } }  

Это представление начнется с надписи «Привет!» и кнопки. При нажатии на кнопку showView логическое значение переключается. Это приведет к тому, что метка будет добавлена/удалена из представления на основе значения showView .

Комментарии:

1. Хм, чего я скорее хочу, так это скрыть вид, который уже виден в начале. Поэтому при запуске моего приложения отображается дочернее представление, однако, когда пользователь нажимает на кнопку, это представление исчезает.

2. @lex обновил пример того, как это использовать.

3. Это прекрасно! Ха-ха, по какой-то причине я не подумал о том, чтобы изначально сделать bool истинным и установить его в значение false/переключаться при нажатии кнопки, я буду винить в этом себя новичка. 😀 Спасибо тебе!