2013-06-05 16 views
4

我剛剛開始使用Xamarin進行iOS開發,似乎遇到了障礙。我正在嘗試創建一個自定義表格單元格來顯示一些數據。因此,從各種在線資源提取提示(例如參見here),我創建了一個.xib文件,刪除了Xamarin自動創建的視圖並將其替換爲UITableViewCell。我在我的單元格中添加了一些標籤,我用RegisterNibForCellReuse註冊了我的單元格,並設置了繼承自UITableViewSource的類,以在適當時返回我的自定義單元格。到現在爲止還挺好。該課程不符合編碼規範(含情節提要)

當我使用自定義單元格中的任何控件並嘗試創建插座時,問題就會出現。在XCode創建出口,一切都看起來沒問題。回到Xamarin,我可以看到它爲它自動創建了一個屬性。

[Register ("MyCustomCell")] 
partial class MyCustomCell 
{ 
    [Outlet] 
    MonoTouch.UIKit.UILabel MyLabel { get; set; } 



    void ReleaseDesignerOutlets() 
    { 
     if (MyLabel != null) { 
      MyLabel.Dispose(); 
      MyLabel = null; 
     } 
    } 
} 

但是當我嘗試和運行代碼我得到一個運行時錯誤說This class in not key value coding-compliant for key the key MyOutlet

任何想法可能發生? Xamarin文檔提示可能的原因here,但我不確定它是否相關。我在任何 Xamarin創建的設計器文件中都沒有看到類似的東西,它們都很好。我嘗試用上面的屬性定義替換爲使用Connect屬性而不是Outlet並使用GetNativeFieldSetNativeField,但我看到了相同的結果。

回答

7

我有這個問題一段時間,在我的情況下,它竟然是一個關於構建過程的問題。下面對我進行了修正:

右鍵單擊您的項目,選擇'選項',然後選擇'Build'子標題下的'iOS Build',將-f添加到'Additional mtouch arguments'並重建。

0

我同意Richard的回答。

你可以做的另一件事是重建項目。 -f參數是做什麼的。

4

我遇到了同樣的問題,最後我在XCode中執行了Product-> Clean,並解決了我的問題。

+0

我解決了清潔項目的問題。 –

0

雖然這是一個比較老的話題,但我想分享我的經驗。所以我有同樣的問題,「清潔」解決方案不適合我。我的解決方案是:1.右鍵單擊您的項目,選擇「選項」2.在Build部分下選擇iOS Build 3.然後在鏈接器選項中選擇「鏈接所有組件」鏈接器行爲。

+0

這不是一個解決方案。這沒有任何意義。 – Grigory

1

用鼠標右鍵單擊您的項目,選擇「選項」,然後選擇「構建」子標題下的「iOS構建」,添加-f到「其他mtouch參數」並重建。

1

在我的情況下,我正在爲幾個按鈕創建動作,而且我意外地做了一個插座,而不是一個動作。我剛剛刪除了@IBOutlet行。

我的錯誤是:

this class is not key value coding-compliant for the key Button_Twitter_Clicked.' 

同樣,在我的情況,我發現我的解決方案來自:

http://www.tech-recipes.com/rx/52021/how-do-i-fix-the-issue-this-class-is-not-key-value-coding-compliant-for-the-key-in-xcode-6/

- Click the "Show Find Navigator" on the left hand side 
- Search for the key above that gave the error, in my case it was the "Button_Twitter_Clicked" key. 
- Double click on the result (my case, I clicked on the View Controller:Outlet 
- On the right hand side, find the Key that was in the exception thrown during runtime (Has exclamation mark) 
    (States that the view controller does not have an outlet named [outletname] 
- Click the X button 
- Recompile :) 

希望這有助於!