2017-03-29 15 views
1

我是Xamarin和MVVMCross的新手。所以我創建了2個視圖。登錄和註冊。我不得不轉到註冊視圖上的登錄按鈕,我通過這段代碼在登錄的視圖模型去那裏:第二個視圖對象的名稱分配崩潰

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

它工作正常的註冊頁面打開好。但是,一旦我在Register視圖(textEdit)上爲單個對象指定Name,當點擊Register按鈕時,應用程序會崩潰。

下面是錯誤信息:

Xamarin.iOS:收到未處理的ObjectiveC異常: NSUnknownKeyException [ 的setValue:forUndefinedKey:]:此類不是密鑰值 編碼兼容的關鍵regNameEdit。

編輯: 更多細節:我已經分配的名稱(見下圖),但仍崩潰: 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查看/視圖控制器類中定義。

請確保您爲此編輯創建了後端屬性,並且分配給XIB的類是包含此屬性的類。

如果您使用Xamarin Studio Designer,您將創建在XIB/StoryBoard中選擇UIControl並設置名稱的後退屬性,然後輸入。

enter image description here

這將創建與您指定的視圖控制器訪問的名稱的屬性。

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

    this.MyUITextField.Text = string.Empty; 
} 

UPDATE

當使用故事板:

試試這個:從文本字段中刪除的姓名,還從視圖控制器類中刪除的名稱,然後清理項目和重建。將該類重新添加到ViewController中,但是當它點擊底部的黃色圖標時,會放置該名稱並回車。繼續TextField,選擇它放置名稱並按回車。

更新#2

當使用XIBs 當你從菜單中創建視圖控制器,Xamarin Studio將創建兩個視圖控制器類和XIB文件,將一個與其他所以這裏關聯你不必做任何事情來鏈接它們。

對於TextField,您需要按照前面的說明添加名稱。

試試這個:刪除UITextField的名稱並保存並清理/重建項目,然後添加名稱並回車。

你可以做的事情來驗證是否有任何問題,雙擊XIB中的按鈕,這應該帶你到ViewController類來創建一個方法。

希望這會有所幫助。

+0

嗨,謝謝你的回答。我其實已經這樣做了,但仍然發生了事故。如果您想查看,我在問題中添加了更多細節。 – GeneCode

+0

@GeneCode在答案中增加了更多信息... – apineda

+0

我想我缺少一些基本的東西。我沒有意識到這個項目有一個故事板和一個視圖控制器。現在我在xib中設計所有東西。不知道viewcontroller如何鏈接到firstview.xib。 – GeneCode

相關問題