前提
Qiitaでの@goofmintさんの
記事を参考に模写学習をしているのですが、
表示がうまくいきません。
実現したいこと
本来ならばアプリを起動すると、
投稿されたリストが表示されると思うのですが、
一度右上の+ボタン(記事を投稿する画面)を
押してからじゃないと
リストが表示されません。
アプリを起動すると
リストを表示できるようにしたい。
発生している問題・エラーメッセージ
本来ならばアプリを起動すると、 投稿されたリストが表示されると思うのですが、 一度右上の+ボタン(記事を投稿する画面)を 押してからじゃないと リストが表示されません。
該当のソースコード
SwiftUI
1 2import SwiftUI 3import NCMB 4 5struct ThreadListView: View { 6 @State var threads: [NCMBObject] = [] 7 @State private var showModal = false 8 @State private var showAlert = false 9 10 var body: some View { 11 NavigationView { 12 ZStack { 13 List { 14 ForEach(self.threads, id: \.objectId) { thread in 15 NavigationLink( 16 destination: ThreadView(thread: thread) 17 ) { 18 ThreadListRow(thread: thread) 19 } 20 } 21 .onDelete(perform: delete) 22 } 23 .navigationBarTitle("掲示板", displayMode: .inline) 24 .navigationBarItems(trailing: 25 Button(action: { 26 showModal.toggle() 27 }, label: { 28 Image(systemName: "plus") 29 .resizable() 30 .padding(6) 31 .frame(width: 24, height: 24) 32 .foregroundColor(.blue) 33 }) 34 ) 35 } 36 } 37 .onAppear { 38 getThread() 39 } 40 .sheet(isPresented: $showModal, content: { 41 AddThreadView() 42 }) 43 .onChange(of: showModal, perform: { value in 44 if (!showModal) { 45 getThread() 46 } 47 }) 48 .alert(isPresented: $showAlert, content: { 49 Alert(title: Text("削除に失敗しました。権限がないようです。")) 50 }) 51 } 52 53 func getThread() { 54 let query = NCMBQuery.getQuery(className: "Thread") 55 let results = query.find() 56 switch results { 57 case let .success(ary): 58 threads = ary 59 case .failure(_): break 60 } 61 } 62 63 func delete(at offsets: IndexSet) { 64 let thread = self.threads[Array(offsets)[0]] as NCMBObject 65 let results = thread.delete() 66 switch results { 67 case .success(_): 68 getThread() 69 case .failure(_): 70 showAlert = true 71 } 72 } 73} 74
試したこと
ZStackやリストの位置を変えましたが、
変化がありませんでした。
補足情報(FW/ツールのバージョンなど)
Qiitaでの@goofmintさんの
参考記事です。
コードもここに全てあります。
ぜひお力添えいただけますと大変嬉しいです。
よろしくお願い致します。
あなたの回答
tips
プレビュー