タグ付けされた質問 「swiftui」

SwiftUIは、グラフィカルユーザーインターフェイスを定義するためのAppleの宣言型Swift APIです。このタグは、任意のプラットフォームのSwiftUIに関する質問に使用します。

1
SwiftUI DynamicPropertyプロパティラッパーの内部更新がビューの更新をトリガーすることを期待することは正しいですか?
SwiftUIでサポートされているカスタムプロパティラッパーを作成しようとしています。つまり、対応するプロパティ値を変更すると、SwiftUIビューが更新されます。ここに私が持っているものの簡単なバージョンがあります: @propertyWrapper public struct Foo: DynamicProperty { @ObservedObject var observed: SomeObservedObject public var wrappedValue: [SomeValue] { return observed.value } } ObservedObjectカスタムプロパティラッパー内に含まれている場合でも、SwiftUI SomeObservedObjectは次の限り変更をキャッチします。 私のプロパティラッパーは構造体です 私のプロパティラッパーは準拠しています DynamicProperty 残念ながらドキュメントはまばらで、これが現在のSwiftUI実装でうまくいかなかった場合にうまく機能しないかどうかを判断するのに苦労しています。 DynamicProperty(オンラインではなくXcode内の)のドキュメントは、そのようなプロパティが外部から変更されてビューを再描画するプロパティであることを示しているようですが、独自のタイプをこのプロトコルに準拠させたときに何が起こるかについては保証されません。 これが今後のSwiftUIリリースで引き続き機能することを期待できますか?

1
SwiftUIで右クリックを検出するにはどうすればよいですか?
私は、 SwiftUIを知るのに役立つ簡単なMinesアプリを作成しています。そのため、プライマリクリック(通常はLMB)で「掘る」(そこに地雷があるかどうかを明らかにする)ようにし、セカンダリクリック(通常はRMB)でフラグを付けるようにします。 掘り出し作業中!しかし、フラグの配置方法がわかりません。セカンダリクリックを検出する方法がわからないためです。 これが私が試していることです: BoardSquareView( style: self.style(for: square), model: square ) .gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square))) .gesture(TapGesture().onEnded(self.handleUserDidTap(square))) 以前に示唆したように、によって返される関数はhandleUserDidTapクリック時に正しく呼び出されますが、によって返される関数はhandleUserDidAltTap、Ctrlキーを押したときにのみ呼び出されます。それがコードが言っていることなので、それは理にかなっています...しかし、セカンダリクリックを登録するAPIが見当たらないので、他に何をすべきかわかりません。 私もこれを試しましたが、動作は同じように見えました: BoardSquareView( style: self.style(for: square), model: square ) .gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square))) .onTapGesture(self.handleUserDidTap(square))

1
SwiftUIで以前にクリックしたNavigationLinkに再度アクセスしようとすると、NavigationLinkがフリーズする
JSONデータを取得し、取得したアイテムのリストをFileBrowserタイプのビューに表示する機能を含むアプリを設計しています。このビューでは、ユーザーはフォルダーをクリックしてファイルツリーの詳細を表示したり、ファイルをクリックしてそのファイルに関するメタデータを表示したりできる必要があります。 これが機能しているときに、ファイルまたはフォルダーをクリックして戻ってもう一度クリックすると、NavigationLinkがトリガーされず、別のNavigationLinkをクリックするまでビューに止まっていることがわかりました。 これは、この問題を示すgifです。 ここに示されているように、BlahBlahをクリックすると、NavigationLinkがアクティブになり、BlahBlahに移動します。その後、戻ってBlahBlahに移動しようとすると、灰色になり、クリックしたことが登録されますが、そこに移動することはありません。 。TestFileをクリックするとこれが修正され、BlahBlahに戻ることができます。 リスト項目は、次の構造体で作成されています private struct FileCell{ var FileName: String var FileType: String var FileID: String = "" var isContainer: Bool } private struct constructedCell: View{ var FileType: String var FileName: String var FileID: String var body: some View { return HStack{ VStack(alignment: .center){ Image(systemName: getImage(FileType: FileType)).font(.title).frame(width: 50) …

1
CoreDataとSwiftUI:環境のコンテキストが永続ストアコーディネーターに接続されていません
宿題管理アプリを作成して、Core Dataを習得しようとしています。リストに新しい割り当てを追加しようとするまで、コードは正常にビルドされ、アプリは問題なく実行されます。Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1c25719e8)次の行でこのエラーが発生しますForEach(courses, id: \.self) { course in。コンソールにもこのエラーがあります:Context in environment is not connected to a persistent store coordinator: <NSManagedObjectContext: 0x2823cb3a0>。 Core Dataについてはほとんど知りませんが、問題が何であるかについて途方に暮れています。データモデルに「割り当て」エンティティと「コース」エンティティを設定しました。ここで、コースは割り当てと1対多の関係にあります。各課題は、特定のコースに分類されます。 これは、リストに新しい割り当てを追加するビューのコードです。 struct NewAssignmentView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.managedObjectContext) var moc @FetchRequest(entity: Course.entity(), sortDescriptors: []) var courses: FetchedResults<Course> @State var name = "" @State var …

4
SwiftUI ScrollViewが更新されませんか?
ゴール に表示するデータを取得する scrollView 期待される結果 実結果 オルタナティブ を使用しますがList、柔軟性がありません(セパレーターを削除できない、複数の列を持つことはできません) コード struct Object: Identifiable { var id: String } struct Test: View { @State var array = [Object]() var body: some View { // return VStack { // uncomment this to see that it works perfectly fine return ScrollView(.vertical) { ForEach(array) { o …
10 swiftui 

1
タイプ 'Binding <Int>'の値を予期される引数タイプ 'Binding <_>'に変換できません
私はTabView次のコードでSwiftUI を作成しようとしています: @State var selection = 0 var body: some View { TabView(selection: $selection) { DataGridPage(type: "media").tabItem { Image(systemName: "photo.on.rectangle") .imageScale(.large) .foregroundColor(.yellow) } .tag(1) DataGridPage(type: "files").tabItem { Image(systemName: "doc.on.doc") .imageScale(.large) .foregroundColor(.yellow) } .tag(2) } } しかし、エラーが発生しますCannot convert value of type 'Binding&lt;Int&gt;' to expected argument type 'Binding&lt;_&gt;'。変数selectionは整数であることがわかります。これは正しいタイプですが、何らかの理由で警告が残っています。
10 swiftui 

3
SwiftUIイニシャライザでビューが@Bindingを必要とするときにPreviewProviderをインスタンス化する方法
SwiftUI(Xcode 11.1)を使用すると、(@ Bindingを使用して)2方向バインディングを設定したビューがいくつかあります。双方向の更新はうまくいきます。 ただし、PreviewProviderからビューをインスタンス化するにはどうすればよいですか? 例えば: struct AddProjectView: View { @Binding public var showModal: Bool var body: some View { return VStack { Text("Add Project View") Button("Dismiss") { self.showModal = false } } } } 「true」はバインディングではないため、これを行うことはできません。 struct AddProjectView_Previews: PreviewProvider { static var previews: some View { AddProjectView(showModal: true) } } 「ローカルプロパティでプロパティラッパーがまだサポートされていない」ため、これを行うことはできません。 …
10 xcode  swiftui  combine 


1
カスタムボタンでSwiftUIキーボードを拡張する
SwiftUI numberPadにキーまたはボタンを追加する方法を見つけようとしています。私が見つけた唯一の参考文献はそれが不可能であると言います。Swiftの世界では、キーボードを非表示にするか、他の機能を実行するためのボタンを備えたツールバーを追加しました。 ボタンを上にしてZStackビューを作成することもできますが、自分のビューにnumberPadを追加する方法が見つかりません。 この場合に私が本当にしようとしているのは、データが入力されたときにnumberPadを閉じることだけです。最初にタップで非表示にするようにSceneDelegateを変更しようとしましたが、それが機能するのは、ビューのオープンスペースではない別のテキストまたはテキストフィールドビューをタップした場合のみです。 window.rootViewController = UIHostingController(rootView: contentView.onTapGesture { window.endEditing(true) }) 理想的には、左下のスペースにDoneキーを追加します。SwiftUIで実行できる場合は、2番目に最適なツールバーを追加します。 どんなガイダンスもいただければ幸いです。 Xcodeバージョン11.2.1(11B500)
10 ios  xcode  keyboard  swiftui 

4
Swift UI数値のみを受け入れるTextFieldの作成方法
私はswiftUIとiOを初めて使用し、数字のみを受け入れる入力フィールドを作成しようとしています TextField("Total number of people", text: $numOfPeople) TextFieldではアルファベット文字も使用できますが、ユーザーが数字のみを入力するように制限するにはどうすればよいですか?

1
SwiftUIを使用してmacOSアプリにツールバーを追加するにはどうすればよいですか?
SwiftUIを使用して、タイトルバー内のツールバーをmacOSアプリに追加しようとしています。以下に示すようなものです。 SwiftUIを使用してこれを実現する方法を理解できません。現在、ビュー内にツールバー(テキストフィールドのみ)がありますが、タイトルバーに移動します。 私の現在のコード: struct TestView: View { var body: some View { VStack { TextField("Placeholder", text: .constant("")).padding() Spacer() } } } したがって、私の場合、ツールバー内にテキストフィールドを配置する必要があります。

3
Swiftui-environmentobjectをパラメーターとして使用してObservedObjectを初期化するにはどうすればよいですか?
これが私たちが住んでいるこの勇敢な新しいSwiftUIの世界のアンチパターンであるかどうかはわかりませんが、基本的には、ビューに呼び出せるいくつかの基本的なユーザー情報が保存された@EnvironmentObjectがあります。 このビューに必要なデータを所有する@ObservedObjectもあります。 ビューが表示されたら、@ EnvironmentObjectを使用して@ObservedObjectを初期化します。 struct MyCoolView: View { @EnvironmentObject userData: UserData @ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID) var body: some View { Text("\(self.viewObject.myCoolProperty)") } } 残念ながら、初期化が完了するまで、環境変数に対してselfを呼び出すことはできません。 「プロパティ初期化子内でインスタンスメンバー 'userData'は使用できません。'self 'が使用可能になる前にプロパティ初期化子が実行されます。」 私はいくつかの可能なルートを見ることができますが、それらはすべてハックのように感じます。私はこれにどのように取り組むべきですか?
9 ios  swift  swiftui  xcode11 

2
SKView警告ログ
SwiftUI&SpriteKitアプリを実行すると、ログに次のメッセージが表示されます。 2019-11-18 21:58:57.631912 + 0000 PixelBattles [2812:1215803] SKView:ignoreRenderSyncInLayoutSubviewsはNOです。ハンドラなしで_renderSynchronouslyForTimeを呼び出す このログを受信するのに何が悪いのでしょうか。心配する必要がありますか?バグでしょうか? SwiftUIがレイアウトをどうやって行うのか理解できないのSKViewでしょうか? 主な編集: コードが必要な場合は、前の編集で確認できます。以下に、それがもはや関連性がないと考える理由を述べます。 Appleにフィードバックを送信しました(FB7456217)。自分のコードに問題があるとは思わなくなったので、コードを削除しました。空のゲームプロジェクトを作成しましたが、SwiftUIはありませんでしたが、それでも同じ警告ログがすぐに表示されました。 したがって、デフォルトのプロジェクトテンプレートを使用しても、デバイスとシミュレータのログは表示されます。有益な回答が得られたら、この問題について更新します。 まだ何も返事がありません-半か月以上前にこれを投稿してから、誰か新しい情報を受け取っていますか?まだこれらの警告があります!

1
SwiftUIで削除および無効化するためのContextMenuボタンを構成する方法
でボタンを設定しようとしましたがcontextMenu、機能しません。 Text("A label that have context menu") .contextMenu { Button(action: { // remove it }) { Text("Remove") .foregroundColor(.red) // Not working Image(systemName: "trash") }.disabled(true) // Not working } 私が持っているもの: 私が探しているもの:(削除ボタンと呼び出しボタン) 私はUIAction次のようなものを作成しますが、UIKitこれをSwiftUIに持ち込むための修飾子を見つけることができません。 let delete = UIAction(title: "Remove", image: UIImage(systemName: "trash"), attributes: .destructive) { action in // remove it }

1
ツールバーにセグメント化されたコントロールを備えたmacOS SwiftUIアプリタブビュー
SwiftUIでmacOSアプリを作成しようとしています。TabViewまたは同様のものが必要ですがTabView、セグメント化されたコントロールを使用すると、macOSツールバーにありません。私が欲しいものの例を見るにはここをクリックしてください 私の現在のコードは: import SwiftUI struct ContentView: View { var body: some View { TabView { Text("1") .tabItem { Text("1") } } } } 結果はイメージです セグメント化されたコントロールは、ビューではなくツールバーにある必要があります。 ありがとうございました。
9 swift  xcode  macos  swiftui 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.