2017-03-29 8 views
1

XamarinとMVVMCrossを初めて使用しています。だから私は2つのビューを作成しました。ログインと登録。私は、後藤の登録ビューへのログインのボタンを持っていると私は、ログインのViewModelにこのコードであっつもりです:それはうまく動作セカンダリビューオブジェクトの名前の割り当てにクラッシュする

// method when user tap register button 
public IMvxCommand NavigateRegister 
{ 
    get { return new MvxCommand(() => ShowViewModel<RegisterViewModel>()); } 
} 

登録ページがうまく表示されます。しかし、いったん登録ビュー(TextEdit)で単一オブジェクトの名前を割り当てたら、登録ボタンをタップするとアプリケーションがクラッシュします。

は、以下のエラーMSGです:

Xamarin.iOS:受信未処理ObjectiveC例外: NSUnknownKeyException [ のsetValue:forUndefinedKey:]:このクラスは、キーregNameEditためのコーディング準拠のキー値 ではありません。

EDIT: 詳細:私はすでに名前を(下の写真を参照)に割り当てられ、まだクラッシュ: enter image description here

とビューは、そのクラスの "CreateAccount" に割り当てられています。しかし、私はクラス宣言が "public partial class CreateAccount : MvxViewController"行に暗くなっていることに気付いています。これは、このクラスと最初のクラスとの唯一の顕著な違いです。

using MvvmCross.Binding.BindingContext; 
using MvvmCross.iOS.Views; 

namespace MyApp.iOS.Views 
{ 
    public partial class CreateAccount : MvxViewController 
    { 
     public CreateAccount() : base("CreateAccount", null) 
     { 
     } 

     public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      // Perform any additional setup after loading the view, typically from a nib. 

      Title = "Register"; 

      var set = this.CreateBindingSet<CreateAccount, Core.ViewModels.CreateAccountModel>(); 
      set.Bind(regNameEdit).To(vm => vm.NameStr); 
     } 

     public override void DidReceiveMemoryWarning() 
     { 
      base.DidReceiveMemoryWarning(); 
      // Release any cached data, images, etc that aren't in use. 
     } 
    } 
} 

バインド(regNameEdit)もエラー(まだテキストエディットを検出していません)

答えて

1

ですこれは通常、コントロールはあなたのケースregNameEditのView /のViewControllerクラスで定義されていないことを意味します。

このEditのbackプロパティを作成し、XIBに割り当てられたクラスがこのプロパティを含むクラスであることを確認してください。

Xamarin Studio Designerを使用している場合は、XIB/StoryBoardでUIControlを選択し、名前を設定してからbackプロパティを作成します。

enter image description here

これは、あなたがのViewControllerでアクセス指定された名前を持つプロパティを作成します。

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 

    this.MyUITextField.Text = string.Empty; 
} 

UPDATE

ストーリーボード使用時:

これを試してみてください。そして、あなたのプロジェクトをきれいにし、再構築し、テキストフィールドから名前を削除してものViewControllerクラスから名前を削除します。 ViewControllerにクラスを再追加しますが、下部にある黄色いアイコンをクリックすると名前が入力され、Enterキーが押されます。 TextFieldを続け、名前を入力してEnterキーを押します。

UPDATE#2

XIBs を使用するときは、メニューからのViewControllerを作成すると、Xamarin StudioはのViewControllerクラスとXIBファイルの両方を作成しますので、ここであなたを他のものを関連付けますそれらをリンクするために他の何かをする必要はありません。

TextFieldについては、前述のように名前を追加する必要があります。

これを試してください:UITextFieldの名前を削除し、プロジェクトを保存してクリーン/リビルドしてから、名前を追加してEnterキーを押します。

何か問題があるかどうかを確認するには、XIBのボタンをダブルクリックしてください。これにより、ViewControllerクラスに移動してメソッドを作成する必要があります。

これが役に立ちます。

+0

ご回答いただきありがとうございます。私は実際にはすでにそれをしましたが、クラッシュはまだ発生します。あなたが見たいと思ったら、私の質問にもっと詳しい情報を追加しました。 – GeneCode

+0

@GeneCodeは答えにもっと多くの情報を追加しました... – apineda

+0

私はここで何か基本的なものを欠いていると思います。私は、プロジェクトにストーリーボードとビューコントロールがあることを認識していませんでした。今、私はxibのすべてをデザインしています。 viewcontrollerがfirstview.xibにどのようにリンクしているか分かりません。 – GeneCode

関連する問題