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

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




15
SwiftUIでVStackを画面の幅いっぱいに表示する
このコードを考えると: import SwiftUI struct ContentView : View { var body: some View { VStack(alignment: .leading) { Text("Title") .font(.title) Text("Content") .lineLimit(nil) .font(.body) Spacer() } .background(Color.red) } } #if DEBUG struct ContentView_Previews : PreviewProvider { static var previews: some View { ContentView() } } #endif それはこの相互作用をもたらします: VStackラベル/テキストコンポーネントが全幅を必要としない場合でも、どうすれば画面の幅を塗りつぶすことができますか? 私が見つけたトリックは、次のように構造体に空 を挿入するHStackことです。 VStack(alignment: .leading) { …
119 ios  swift  xcode  swiftui 

5
Xcode 11-iOS 13でUISceneDelegate / SwiftUIをオプトアウト
現在Xcode 11 Beta 5を使用しています。私のアプリケーション内では、iOS 12以下で問題なく動作します。ただし、iOS 13では、デフォルトでUISceneを使用しているように見えます。これは私のアプリが何もしない原因となっています。 アプリを新規インストールで起動すると、ユーザーが同意する必要のある利用規約があります。同意した後、ロード画面に移動し、メイン画面に移動します。私が投稿したスクリーンショットでは、現在のフォアグラウンドでの背後にあるビューはスプラッシュロード画面です。 アプリケーション全体に複数のビューのシーンサポートを追加することを検討しますが、現在、私たちはより優先度の高い作業を行う必要があります。 https://imgur.com/i0qLhAL 「複数ウィンドウのサポート」は、アプリのターゲットの一般設定ですでに無効になっています。また、info.plistファイルで「複数のウィンドウを有効にする」を「いいえ」に設定しています。 これまでのところ、実際には何も機能していません。基本的に、iOS 10-12で元の動作を復元するために、複数のウィンドウとUIScene / SwiftUIをオプトアウト/無効化したいと考えています。これはiOS 13で可能ですか、それとも更新する必要がありますか? 更新: これは、ビューのデバッグ階層のスクリーンショットです。左側はiOS 12、右側はiOS 13です。Info.plistにもシーンデリゲートクラスやメソッドにも何も追加しないと、なぜ違うのですか?Xcode 11の既存の本番環境対応コードで実行しただけです。 https://imgur.com/C3aLsDo
106 swift  xcode  swiftui  ios13 


3
SwiftUI:@Binding変数を使用してカスタムinitを実装する方法
私はお金の入力画面で作業してinitおり、初期化された金額に基づいて状態変数を設定するカスタムを実装する必要があります。 これでうまくいくと思いましたが、次のようなコンパイラエラーが発生します。 Cannot assign value of type 'Binding<Double>' to type 'Double' struct AmountView : View { @Binding var amount: Double @State var includeDecimal = false init(amount: Binding<Double>) { self.amount = amount self.includeDecimal = round(amount)-amount > 0 } ... }
102 swift  swiftui 

24
キーボードがSwiftUIに表示されたら、TextFieldを上に移動します
TextFieldメインの中に7つありContentViewます。ユーザーがキーボードを開くと、一部はTextFieldキーボードフレームの下に隠れています。ですからTextField、キーボードが出てきたら、それぞれ上に移動したいと思います。 以下のコードを使用TextFieldして画面に追加しました。 struct ContentView : View { @State var textfieldText: String = "" var body: some View { VStack { TextField($textfieldText, placeholder: Text("TextField1")) TextField($textfieldText, placeholder: Text("TextField2")) TextField($textfieldText, placeholder: Text("TextField3")) TextField($textfieldText, placeholder: Text("TextField4")) TextField($textfieldText, placeholder: Text("TextField5")) TextField($textfieldText, placeholder: Text("TextField6")) TextField($textfieldText, placeholder: Text("TextField6")) TextField($textfieldText, placeholder: Text("TextField7")) } } } 出力:
100 ios  swift  swiftui 

11
SwiftUIのアクティビティインジケーター
SwiftUIにフルスクリーンのアクティビティインジケーターを追加しようとしています。 プロトコルで.overlay(overlay: )機能を使用できますView。 これで、任意のビューオーバーレイを作成できますが、にUIActivityIndicatorView相当するiOSのデフォルトスタイルが見つかりませんSwiftUI。 どうすればデフォルトスタイルのスピナーを作成できますSwiftUIか? 注:これは、UIKitフレームワークにアクティビティインジケーターを追加することではありません。
97 swiftui 

9
SwiftUIのテキスト配置
Textビューの多くのプロパティの中で、テキストの配置に関連するものは見つかりませんでした。デモでRTLを自動的に処理し、Viewを使用してコンテンツを配置すると、body常に自動的に中央に配置されることを確認しました。 のレイアウトシステムについて欠落している概念はありますか?SwiftUIそうでない場合は、テキスト配置プロパティをに設定するにはどうすればよいTextですか?
97 ios  swift  swiftui 

15
SwiftUINavigiationViewのデフォルトのナビゲーションバースペースを削除する方法
私は(ほとんどの人と同じように)SwiftUIを初めて使用し、NavigationViewに埋め込んだリストの上の空白を削除する方法を見つけようとしています。 この画像では、リストの上に空白があることがわかります 私が達成したいのはこれです 使ってみました .navigationBarHidden(true) しかし、これは目立った変化をもたらしませんでした。 私は現在、このようにnavigiationViewを設定しています NavigationView { FileBrowserView(jsonFromCall: URLRetrieve(URLtoFetch: applicationDelegate.apiURL)) .navigationBarHidden(true) } ここで、FileBrowserViewは、このように定義されたリストとセルを持つビューです。 List { Section(header: Text("Root")){ FileCell(name: "Test", fileType: "JPG",fileDesc: "Test number 1") FileCell(name: "Test 2", fileType: "txt",fileDesc: "Test number 2") FileCell(name: "test3", fileType: "fasta", fileDesc: "") } } ここでの最終的な目標は、これらのセルをクリックしてファイルツリーの奥深くまで移動できるようにすることです。したがって、深いナビゲーションではバーに[戻る]ボタンを表示する必要がありますが、私の最初のビューの間にそのようにトップ。

11
SwiftUIで複数行のTextFieldを作成するにはどうすればよいですか?
SwiftUIで複数行のTextFieldを作成しようとしていますが、その方法がわかりません。 これは私が現在持っているコードです: struct EditorTextView : View { @Binding var text: String var body: some View { TextField($text) .lineLimit(4) .multilineTextAlignment(.leading) .frame(minWidth: 100, maxWidth: 200, minHeight: 100, maxHeight: .infinity, alignment: .topLeading) } } #if DEBUG let sampleText = """ Very long line 1 Very long line 2 Very long line 3 Very …
93 ios  swiftui 

4
NavigationLinkは1度しか機能しません
ログインを使用してアプリケーションで作業していたところ、ログイン後にカテゴリがリストされています。また、各カテゴリの下には、いくつかの項目が横に並んでいます。ログイン後、メインページが表示され、すべてがリストに表示されます。アイテムをクリックすると詳細画面が表示されますが、戻ろうとするとクラッシュします。このフローを見つけました。`NavigationView`の `navigationBarItems`内に` NavigationLink`を配置した後、後方に移動するとSwiftUIアプリがクラッシュするのはなぜですか?しかし、私は私の問題を解決できませんでした。プロジェクトが複雑になったので、swiftuiでナビゲーションを練習したかっただけで、新しいプロジェクトを作成しました。ちなみに、最新のxcodeバージョン11.3をダウンロードしました。次のように簡単なコードを書きました。 NavigationView{ NavigationLink(destination: Test()) { Text("Show Detail View") } .navigationBarTitle("title1") また、Test()ビューは次のとおりです。 import SwiftUI struct Test: View { var body: some View { Text("Hello, World!") } } struct Test_Previews: PreviewProvider { static var previews: some View { Test() } } ご覧のとおり、とても簡単です。私もインターネットで同様の例を試しましたが、想定したように機能しません。プロジェクトを実行するときに、ナビゲーションリンクをクリックすると、Test()ビューに移動します。次に、戻るボタンをクリックすると、メインページに移動します。しかし、ナビゲーションリンクを2回クリックしても何も起こりません。ナビゲーションリンクが機能するのは1回だけで、その後は何も起こりません。ナビゲートせず、エラーもスローしません。私はSwiftuiに慣れていないので、ナビゲーション以外はすべて素晴らしいです。インターネットで多くの例を試し、解決策を提案しましたが、問題を解決するものは何もないようです。

9
`NavigationView`の` navigationBarItems`内に `NavigationLink`を配置した後に後方に移動すると、SwiftUIアプリがクラッシュするのはなぜですか?
最小限の再現可能な例(Xcode 11.2ベータ、これはXcode 11.1で動作します): struct Parent: View { var body: some View { NavigationView { Text("Hello World") .navigationBarItems( trailing: NavigationLink(destination: Child(), label: { Text("Next") }) ) } } } struct Child: View { @Environment(\.presentationMode) var presentation var body: some View { Text("Hello, World!") .navigationBarItems( leading: Button( action: { self.presentation.wrappedValue.dismiss() }, label: …

6
SwiftUI-ビューにハードコードされたナビゲーションを回避する方法は?
私は、より大きな、本番環境対応のSwiftUIアプリのアーキテクチャーを作ろうとしています。私はいつもSwiftUIの主要な設計上の欠陥を指摘する同じ問題に遭遇しています。 それでも、誰も私に完全に機能する、生産準備の整った答えを与えることができませんでした。 SwiftUIナビゲーションを含む再利用可能なビューを行う方法は? 以下のようSwiftUI NavigationLink強くビューにバインドされ、これは、それが大きなアプリにもスケールするように、単純に不可能です。NavigationLinkこれらの小さなサンプルアプリでは機能します、はい。また、モジュールの境界を越えて再利用することもできます。(例:iOS、WatchOSなどでViewを再利用する...) 設計上の問題:NavigationLinksはビューにハードコードされています。 NavigationLink(destination: MyCustomView(item: item)) しかし、これNavigationLinkを含むビューが再利用可能である場合、宛先をハードコーディングすることはできません。宛先を提供するメカニズムが必要です。私はここでこれを尋ね、かなり良い答えを得ましたが、それでも完全な答えではありません: SwiftUI MVVMコーディネーター/ルーター/ NavigationLink アイデアは、宛先リンクを再利用可能なビューに挿入することでした。一般にこのアイデアは機能しますが、残念ながら、これは実際のプロダクションアプリに拡張できません。複数の再利用可能な画面が表示されるとすぐに、1つの再利用可能なビュー(ViewA)に事前構成されたビューの宛先(ViewB)が必要であるという論理的な問題が発生します。しかしViewB、事前に構成されたビューの宛先も必要な場合はどうViewCでしょうか。に注入する前に、すでに注入されてViewBいる方法で作成する必要があります。などなど...しかし、そのときに渡されなければならないデータが利用できないため、構造全体が失敗します。ViewCViewBViewBViewA 私が持っていたもう1つのアイデアはEnvironment、依存関係注入メカニズムとしてを使用しての宛先を注入することでしたNavigationLink。しかし、これは多かれ少なかれハックとして考える必要があり、大規模なアプリのスケーラブルなソリューションではないと思います。基本的にはすべてに環境を使用することになります。しかし、EnvironmentもView内でのみ使用できるため(別個のCoordinatorsやViewModelsでは使用できません)、これもまた、奇妙な構造を作成すると思います。 ビジネスロジック(例えばビューモデルコード)とビューのようにもナビゲーションを分離する必要があり、(例えばコーディネーターパターン)を分離する必要がビューUIKit我々がアクセスするため、それが可能だUIViewControllerとUINavigationControllerビューの後ろに。UIKit'sMVCには、「Model-View-Controller」ではなく「Massive-View-Controller」というおもしろい名前になるほど多くの概念がまとまってしまうという問題がすでにありました。現在、同様の問題が続いてSwiftUIいますが、私の意見ではさらに悪化しています。ナビゲーションとビューは強く結合されており、分離することはできません。したがって、ナビゲーションが含まれている場合、再利用可能なビューを実行することはできません。これを解決することは可能でしたUIKitが、今では正気な解決策を見ることができませんSwiftUI。残念ながら、Appleはそのようなアーキテクチャ上の問題を解決する方法を説明しませんでした。いくつかの小さなサンプルアプリを入手しました。 私は間違っていると証明されたいです。大規模な本番環境対応アプリでこれを解決するクリーンなアプリデザインパターンを見せてください。 前もって感謝します。 更新:この賞金は数分で終了しますが、残念ながら、まだ誰も実例を提供できませんでした。しかし、他の解決策が見つからず、ここにリンクできない場合は、この問題を解決するための新しい報奨金を開始します。彼らの多大な貢献に感謝します!

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