2013-09-30 25 views
4

我有一個綁定到EditingDidBegin的應用程序。它適用於iPhone模擬器(的iOS 7),而精對實際的iPhone,我得到以下警告消息在運行時:MvvmCross無法在iPhone上爲EditingDidBegin創建目標綁定

MvxBind:警告:1.29無法創建目標結合爲以EditingDidBegin

的綁定代碼對照是:

var set = this.CreateBindingSet<InventoryBalanceView, InventoryBalanceViewModel>(); 
set.Bind(StoreroomLabel).To(vm => vm.StoreRoomCaption); 
set.Bind(StoreroomTextField).To(vm => vm.StoreRoom); 
set.Bind(ItemNumberLabel).To(vm => vm.ItemNumberCaption); 
set.Bind(ItemNumberTextField).To(vm => vm.ItemNumber); 
set.Bind(BinNumberLabel).To(vm => vm.BinNumberCaption); 
set.Bind(BinNumberTextField).To(vm => vm.BinNumber); 
set.Bind(QuantityLabel).To(vm => vm.QuantityCaption); 
set.Bind(QuantityTextField).To(vm => vm.Quantity); 
set.Bind(SubmitButton).To(vm => vm.SetFocusCommand); 
set.Bind(DeleteButton).To(vm => vm.DeleteCommand); 
     set.Bind(NavigationItem.RightBarButtonItem).To(vm => vm.ScanStoreRoomCommand); 
set.Bind(DeleteButton).For(b => b.Hidden).To(vm => vm.IsDeleteButtonHidden); 

set.Bind(SubmitButton).For("Title").To(vm => vm.SubmitButtonTitle); 
set.Bind(DeleteButton).For("Title").To(vm => vm.DeleteButtonTitle); 

set.Bind(StoreroomTextField).For("EditingDidBegin").To(vm => vm.SetFocusCommand).CommandParameter("StoreRoom"); 
set.Bind(ItemNumberTextField).For("EditingDidBegin").To(vm => vm.SetFocusCommand).CommandParameter("ItemNumber"); 
set.Bind(BinNumberTextField).For("EditingDidBegin").To(vm => vm.SetFocusCommand).CommandParameter("BinNumber"); 
set.Bind(QuantityTextField).For("EditingDidBegin").To(vm => vm.SetFocusCommand).CommandParameter("Quantity"); 

set.Apply(); 

我沒有更改項目設置以鏈接的所有組件,但是這似乎並沒有有任何關於這個問題的影響。

任何想法我的代碼有什麼問題,或者如何解決問題?

感謝您的幫助!

回答

7

這種類型的消息 - 加上'它在模擬器中工作'的證據 - 幾乎總是意味着鏈接器已經刪除了符號。

您可以添加一行到「LinkerPleaseIgnore.cs」(或其他文件)的鏈接,使其包含該事件,而不是「將項目設置更改爲鏈接所有程序集」。

例如包括像https://github.com/slodge/NPlus1DaysOfMvvmCross/blob/master/N-38-Maps/Mappit.Touch/LinkerPleaseInclude.cs一個文件的方法,如:

public void Include(UITextField textField) 
    { 
     textField.Text = textField.Text + ""; 
     textField.EditingChanged += (sender, args) => { textField.Text = ""; }; 
     textField.EditingDidBegin += (sender, args) => { textField.Text = ""; }; 
     textField.EditingDidBegin -= (sender, args) => { textField.Text = ""; }; 
    } 

這將希望招鏈接到包括textField.EditingDidBegin符號

+0

,完美的工作!謝謝你快速的回覆! –

+0

這一切都表明「鏈接所有組件」在Xamarin內部被再次破壞:/ – Stuart

+0

仍然有效的修復。在爲UIButton添加標籤值時遇到此問題。通過button.Tag = button.Tag + 0擴展LinkerPleaseInclude.cs中的UIButton方法,修復了模擬器上未發生的問題,但是在設備上發生了問題... – Hutjepower

相關問題