質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

846閲覧

【SwiftUI】VStackを使うとエラーになる

lucia0320

総合スコア15

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/10/15 06:34

いつもお世話になっております。

SWiftUIで、今までこんなことになったことなかったのですが
VStackを使用することができません。

プログラムは本当に簡単で下記となります。

swift

1import SwiftUI 2 3struct JournalBookMarkView: View { 4 5 @Binding var isShowJournalMenu: Bool 6 @Binding var isShowJournalBookMarkMenu_1: Bool 7 @State var isShowJournalBookMark_1: Bool 8 9 var body: some View { 10 11 VStack { 12 isShowJournalBookMark_1 = false 13 Text("aaa") 14 Text("aaa") 15 } 16 17 } 18}

エラーメッセージは下記となります。
エラーメッセージ

Type '()' cannot conform to 'View'

  1. Only concrete types such as structs, enums and classes can conform to protocols
  2. Required by static method 'buildBlock' where 'C0' = '()'

念のため画面キャプチャーも貼付します。

画面キャプチャー

xcode画面

ちなみに下記のようにVStackを外すとエラーが取れます。

swift

1import SwiftUI 2 3struct JournalBookMarkView: View { 4 5 @Binding var isShowJournalMenu: Bool 6 @Binding var isShowJournalBookMarkMenu_1: Bool 7 @State var isShowJournalBookMark_1: Bool 8 9 var body: some View { 10 11 isShowJournalBookMark_1 = false 12 Text("aaa") 13 14 } 15}

しかしながら、当該プログラムではどうしてもVStackを使用したく
どうすれば良いか、困り果てております。

対応方法についてご教示いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/10/15 08:10

isShowJournalBookMark_1 = false を VStack の外に出せば、とりあえず動くことは動くかも…。
lucia0320

2021/10/15 08:12

ありがとうございます。 試しましたがエラーは変わらずダメでした。
退会済みユーザー

退会済みユーザー

2021/10/15 09:17

「下記のようにVStackを外すとエラーが取れます。」とありますが本当ですか?ビルドできますか?
lucia0320

2021/10/15 09:28 編集

>すみません。。 >嘘言っても仕方ないのですが、本当です。ビルド可能です。 重ね重ね申し訳ございません。 isShowJournalBookMark_1 = falseを入れるとエラーになりました。 Text("aaa")だけだとビルド可能でした。 isShowJournalBookMark_1 = falseが原因っぽいので、ちょっとコーディング考えます。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2021/10/15 09:29

そうですか。Xcodeのバージョンはいくつですか?
退会済みユーザー

退会済みユーザー

2021/10/15 09:55

あれっ?…………編集しないで新しくコメントして下さい…………。後から読む人は流れが分からなくなります。
guest

回答1

0

ベストアンサー

swift

1Only concrete types such as structs, enums and classes can conform to protocols

でプロトコルに準拠できるのは、構造体、列挙型、クラスなどの具象型のみと記載があることから、
VStackの中でisShowJournalBookMark_1 = false を定義しているのがエラーの原因です。

isShowJournalBookMark_1 = false を格納するためには、以下二つの方法があると考えられます。


1、VStackを呼ぶ際に、isShowJournalBookMark_1 = false を実行したいのであれば、onAppearでisShowJournalBookMark_1 = falseにしてあげればいいと思います。

swift

1VStack { 2 Text("aaa") 3 Text("aaa") 4} 5.onAppear { // 追記 6 isShowJournalBookMark_1 = false 7}

2、JournalBookMarkViewを初期化時にisShowJournalBookMark_1 = falseを実行する。

swift

1struct JournalBookMarkView: View { 2 3 @Binding var isShowJournalMenu: Bool 4 @Binding var isShowJournalBookMarkMenu_1: Bool 5 @State var isShowJournalBookMark_1: Bool 6 7 init() { // 追記 8 isShowJournalBookMark_1 = false 9 } 10 11 var body: some View { 12 13 VStack { 14 isShowJournalBookMark_1 = false 15 Text("aaa") 16 Text("aaa") 17 } 18 19 } 20}

投稿2021/10/16 03:39

Pomu3270

総合スコア280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lucia0320

2021/10/25 05:02

勉強になります。 非常に分かりやすくて大変助かりました。 別のエラーが出ましたが、私の作りが一部甘かったようです。 前に進みましたので大感謝です。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問