所以我有兩個結構視圖位于不同的檔案中。第一個視圖就像一個主螢屏。第二個視圖就像一個聊天對話框。第一個主螢屏視圖上有一個按鈕,當它被點擊時,我希望聊天框視圖出現在主螢屏視圖的頂部。
圖片:
- 主螢屏視圖 問題討論按鈕,單擊該按鈕將打開聊天框視圖
- 單擊問題討論按鈕并在主螢屏視圖頂部顯示聊天框視圖
//Home Screen View
var body: some View {
ZStack (alignment: .top){
Button(action: {
self.viewModel.toggleChatBox()
}, label: {
Text("Issue Discussion")
Image(systemName: "message")
})
// ChatBox view that displays the chat box on the home screen
ChatBox(tailNum: viewModel._781formInstance.tailId, issueNum: viewModel._781formInstance.issueNum, Form781aInstance: self)
.background(Color(UIColor.white))
.border(.black, width: 0.7)
.frame(width: 270)
.offset(x: self.viewModel.chatBox ? 0 : UIScreen.main.bounds.width)
}
}
*我在主螢屏視圖中省略了很多我認為這個問題不需要的額外內容,所以如果您有問題或需要更多資訊,請告訴我
單擊按鈕時,我需要 ChatBox 視圖出現和消失。我目前只是根據切換聊天框布爾變數設定偏移量。當 var 為 true 時,它??將偏移設定到螢屏上的正確位置。當為 false 時,它??將偏移設定為離開螢屏(所以你看不到它)。我這樣做是因為出于某種原因,Apple 決定讓 .hidden() 方法成為無條件的......
我的問題是 ChatBox 的發送和文本框出現了奇怪的行為。當我測驗它將聊天框放在導航鏈接中時,它會正常運行,但導航鏈接會將用戶帶到新螢屏,而不是在主螢屏上顯示聊天框。
我想知道將聊天框視圖顯示到主螢屏視圖的正確方法
uj5u.com熱心網友回復:
將所有內容包裝在 if 子句中應該可以解決問題。只要存盤狀態的 var 位于@Published
包裝器中并且您viewModel
被觀察到:
if viewModel.whatEverYourBoolIsCalled {
ChatBox(tailNum: viewModel._781formInstance.tailId, issueNum: viewModel._781formInstance.issueNum, Form781aInstance: self)
.background(Color(UIColor.white))
.border(.black, width: 0.7)
.frame(width: 270)
.offset(x: self.viewModel.chatBox ? 0 : UIScreen.main.bounds.width)
.zIndex(3000)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505331.html
上一篇:這里聊聊掃地機的 IOT 開發