1

を使用してXamarin.iOSいます。UIView数秒で作成しましたUITextField。これらのテキストフィールドのテキスト値をコードから初期化する最良の方法を探しています。のコンストラクターでテキスト データを渡すことはできますがUIViewContoller、その内部の textFields にアクセスすることはできません (null です)。viewDidLoad メソッドで textFields のテキスト値を変更できます。

コントローラークラスに追加のフィールドを作成して、コンストラクターから渡されたデータを保存し、それらをviewDidLoadで使用したくありません。より良い解決策を知っていますか?

4

1 に答える 1

8

コントローラークラスに追加のフィールドを作成して、コンストラクターから渡されたデータを保存し、それらをviewDidLoadで使用したくありません。

しかし、それはそれが行われることを意味する方法です。

または、MVVM パターンを使用する場合は、viewcontroller で作成するフィールド/プロパティを減らすことができます。

public class UserViewModel {
    public string Name { get; set;}
    public string Title { get; set;}
}

public class UserViewController : UIViewController
{
    UserViewModel viewModel;
    public UserViewController (UserViewModel viewModel) : base (...)
    {
        this.viewModel = viewModel;
    }

    public override void ViewDidLoad ()
    {
        userName.Text = viewModel.Name;
        userTitle.Text = viewModel.Title;
    }
}

これは、プラットフォーム (android、WP など) 間で多くのコードを再利用し、懸念事項を明確に分離するようなパターンです。これは (非常に) わずかな余分なコードですが、すべてのバイトの価値があります。

于 2013-10-16T13:12:50.163 に答える