問題タブ [swift5.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
845 参照

ios - ビューに BindableObject を渡す

Apple のセッションとチュートリアルから、BindableObject をビューに渡す 2 つのオプションがあります。

  1. ラッパーを使用BindableObjectして階層の最上位ビューで真のソースとして宣言を使用し、それを宣言された他のビューに渡します。@ObjectBinding@Binding
  2. ラッパーを使用BindableObjectして階層内のトップ ビューで真のソースとして宣言を使用し、モディファイアを使用してトップ ビューを初期化し、それを他のビューまたは宣言済みまたは使用に渡します(この場合、SwiftUI によって自動的に割り当てられ、必要はありません)。 init で渡します)。@EnviromentObject.enviroment(BindableObject)@Binding@EnviromentObjectBindableObject

アイテムのリストがあり、他のビュー(またはRowViewまたは別の画面)のアイテムの1つを変更したい場合は、ユーザー入力の処理チュートリアルから、次のことが必要です。BindableObject

  1. BindableObject上記のいずれかの方法を使用して、 をより深いビューに 渡します。
    1. 選択したアイテムをこのビューに渡します。
    2. BindingViewリスト内のアイテムを見つけて、アイテムのプロパティをバインドしますBindableObject

質問を明確にするためのいくつかのコード:

メッセージモデルとBindableObject

アイテムのリストを表す MessageView 構造体 MessagesView

特定のアイテムの状態を更新するためのトグルを持つ MessageRowBindableObject

このアプローチは、上記のチュートリアルに示されています。

質問:@Binding Message を として個別に渡し、子ビューで直接操作し たかったのですが、これを実装できませんでした。私は少し混乱しました。後でインデックスBindableObjectを使用してアイテムをバインドするために、選択されたアイテムの両方を任意のビュー(バインディングを処理する必要がある)に渡すのは適切な方法ですか? 完全ではなくその一部を渡し、この部分をバインドBindableObjectできるようにする他の方法はありますか(それは真実のソースでなければなりません)、私たちの場合、この部分はですか?BindableObjectMessage

0 投票する
3 に答える
3270 参照

ios - SwiftUI ログイン ページのレイアウト

ログインビューを構築しようとしているときにSwiftUIを調査していますが、現在問題に直面しています

これは私が達成しようとしているものです:

私がすでに達成したこと

ご覧のとおり、私はすでにこのポイントに到達していますが、実装が好きではありません

ユーザー名とパスワードのテキストをテキストフィールドの真ん中に正確に揃えるために、私が好きではないリテラルのスペース値を入れなければ20ならVStackなかったためです。

同じ結果を達成するためのより良い方法を見た人はいますか?

ありがとう

0 投票する
1 に答える
868 参照

swift - SwiftUI:アラートに.presentation修飾子を使用するには? コンパイラの型チェック エラーの取得

UIKit で作成したクイズ アプリを楽しみのために SwiftUI に再構築していますが、以下の最後の .presentation 修飾子でコンパイラ エラーが発生しました。

これをどのように分割するかはわかりません。それは十分に単純に思えます。2012 MacBook Pro Retina i7 を実行しています。