Как очистить текстовое поле с помощью кнопки (Swift UI)

Я пытаюсь реализовать Mailview, как я видел раньше в учебнике. Решив макет, я попытался добавить в него некоторые особенности.

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

import SwiftUI var inboundMails = [[String()]] var outboundMails = [[String()]] struct ContentView: View { @State var showComposeMessageView: Bool = false var body: some View { TabView { NavigationView { List (0 ..< 6) { _ in NavigationLink(destination: Text(«Nachrichtentext»)) { SingleMessageView() } } .listStyle(GroupedListStyle()) .navigationTitle(«Inbox») .navigationBarItems(trailing: Button(action: { showComposeMessageView.toggle() }, label: { Image(systemName: «square.and.pencil») }) ) } // Verfassen Button .sheet(isPresented: $showComposeMessageView, content: { NewMessage() }) //.sheet .tabItem { Image(systemName: «envelope.fill») Text(«Inbox») } Text(«Sent») .tabItem { Text(«Sent») Image(systemName: «paperplane.fill») } } } } // Design eines einzelnen Nachrichtenblocks struct SingleMessageView: View { var body: some View { HStack { Image(systemName: «person.circle.fill») .resizable() .frame(width: 40, height: 40, alignment: .center) .foregroundColor(.gray) VStack(alignment: .leading) { HStack { Text(«Absender») .font(.headline) Spacer() Text(«01-07-2020») .font(.subheadline.monospacedDigit()) .foregroundColor(.secondary) } Text(«Betreff») .font(.subheadline) .lineLimit(2) } } } } //Neue Nachricht verfassen struct NewMessage: View { @State var messageText = «» @State var betreff = «» @State var cc = «» @State var empfaenger = «» @State var sendButton: Bool = false var body: some View { ZStack { Color.white Spacer() VStack(alignment: .leading) { // Kopfzeile HStack(alignment: .top) { Spacer() Image(systemName: «paperplane.circle») .resizable() .frame(width: 70, height: 70, alignment: .leading) VStack(alignment: .leading) { Text(«Empfänger: «) Spacer() Text(«Betreff: «) Spacer() Text(«CC:») }.frame(height: 70) VStack { TextField(«Empfänger», text: $empfaenger).lineLimit(2) .font(.subheadline) Spacer() TextField(«Betreff», text: $betreff).lineLimit(2) .font(.subheadline) Spacer() TextField(«CC», text: $cc) .font(.subheadline) }.frame(height: 70) } .foregroundColor(.black) .background(Color.white) .font(.headline) // Knöpfe HStack { Spacer() // Senden Button( action: { sendButton.toggle() outboundMails = Mails().MailManager(inbound: false, from_to: empfaenger, cc: cc, subject: betreff, message: messageText, mailarray: outboundMails)}, label: {Image(systemName: «paperplane»)}) .frame(width: 20, height: 20, alignment: .leading) Spacer() // Farbe bearbeiten Button( action: { sendButton.toggle() }, label: {Image(systemName: «pencil»)}) .frame(width: 20, height: 20, alignment: .leading) Spacer() // Anlage hinzufügen Button( action: { sendButton.toggle() }, label: {Image(systemName: «doc»)}) .frame(width: 20, height: 20, alignment: .leading) Spacer() // Verwerfen Button( action: { sendButton.toggle() messageText = «» cc = «» betreff = «» empfaenger = «» }, label: {Image(systemName: «trash»)}) .frame(width: 20, height: 20, alignment: .leading) Spacer() }.frame(height: 30, alignment: .top) // NachichtentextFeld TextEditor(text: $messageText) .frame(width: 411, height: 400, alignment: .top) .border(Color.gray) Spacer() } } } } // Design eines einzelnen Nachrichtenblocks struct SendMessageView: View { var body: some View { HStack { Image(systemName: «person.circle.fill») .resizable() .frame(width: 40, height: 40, alignment: .center) .foregroundColor(.gray) VStack(alignment: .leading) { HStack { Text(«Absender») .font(.headline) Spacer() Text(«01-07-2020») .font(.subheadline.monospacedDigit()) .foregroundColor(.secondary) } Text(«Betreff») .font(.subheadline) .lineLimit(2) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } «` Thanks in advance for your help!

привет, интересно, возможно, это может вас заинтересовать stackoverflow.com/questions/320078/   —  person Benhuen    schedule 06.07.2021

Просто установите свойство text для этого текстового поля как пустую строку.   —  person Benhuen    schedule 06.07.2021

Код делает это. На самом деле, он выглядит нормально и работает для меня в предварительном просмотре SwiftUI.   —  person Benhuen    schedule 06.07.2021

@Seaspell Можете ли вы объяснить это немного подробнее? Я знаю, что в этом поле установлено нулевое значение или пустая строка. Я могу изменить только сохраненные переменные, но он не очищает поля Tex при просмотре   —  person Benhuen    schedule 07.07.2021

@Eric Shieh из Я нажимаю кнопку корзины, все поля должны быть Clearstream. В моем моделировании этого не происходит: /   —  person Benhuen    schedule 07.07.2021

@jspcal Мне нужна кнопка x в каждом поле. Я хочу разорвать каждое поле с помощью только одной кнопки   —  person Benhuen    schedule 07.07.2021

@Benhuen Я скопировал ваш код, закомментировал одну строку (outboundMails = …) и запустил ее в Live Preview. Создал новую почту, заполнил все поля, а потом нажал корзину. Все поля очищены. Я использую Xcode 12.5 в проекте развертывания iOS 14.5.   —  person Benhuen    schedule 07.07.2021

@Eric Shieh, ладно, это подозрительно. Я проверю это позже еще раз. Заранее спасибо!   —  person Benhuen    schedule 07.07.2021

@Eric Shieh Кстати, у вас тоже была проблема, что первое поле выходит за пределы окна, когда вы открываете клавиатуру?   —  person Benhuen    schedule 07.07.2021

@Eric Shieh Спасибо, братан, все сработало! Идк, почему я не получил его раньше.   —  person Benhuen    schedule 08.07.2021

Источник: ledsshop.ru

Стиль жизни - Здоровье!