2014-01-13 55 views
5

我正在研究Objective-C協議和委託,並試圖在Xamarin.iOS中實現自定義的一個。我在下面的「綁定協議」Xamarin.iOS找不到類型BaseType屬性

[BaseType (typeof(NSObject))] 
[Model][Protocol] 
public interface INITableViewCellDelegate { 

} 

由於某種原因,我無法找到BASETYPE屬性Xamarin文檔中的例子。我不能參考它。我目前的命名空間爲項目的名單是:

using System; 
using System.Drawing; 
using MonoTouch.Foundation; 
using MonoTouch.UIKit; 
using MonoTouch.CoreGraphics; 
using MonoTouch.ObjCRuntime; 

我期待,它應該是在系統或MonoTouch.ObjCRuntime。任何人都可以點亮一下嗎?我檢查了涉及綁定協議的StackOverflow的其他問題,許多示例顯示了相同的MonoTouch使用方法。

謝謝

+0

在最近的版本中,實際上存在一個問題,即XS。見[這個bug](https://bugzilla.xamarin.com/show_bug.cgi?id=52553) – bunkerdive

回答

6

確保您使用的是iOS的綁定項目

enter image description here

+0

也許我應該澄清一點。是否有可能生成我們自己的C#協議。我沒有試圖從本地庫綁定。我知道我可以使用.NET事件,但我有興趣使用委託方法,因爲我正在嘗試創建一些我想在UITableView級別上觸發的委託。我想我正在通過練習來看看它是否可能。儘管看起來像basetype屬性是沒有必要的,但我更多地考慮它。 – JamWils

+0

啊我看,是的Xamarin.iOS API有代表,你可以像C#中的接口一樣實現代理,這個文檔應該可以幫助你開始http://docs.xamarin.com/guides/ios/application_fundamentals/delegates,_protocols, _and_events / – dalexsoto

0

[BaseType]屬性只在類型「的iOS結合工程」項目中使用,並不在運行時可用。

因此,請確保您正在執行將由btouch工具處理的「iOS綁定項目」,並將爲您的本機庫生成綁定。

0

我有同樣的問題,因爲我只是盲目地添加Sharpie創建到我的項目沒有想到的文件。

當您創建新的iOS綁定庫時,它會創建兩個文件:ApiDefinition.csStructs.cs。除了與項目名稱相匹配的名稱空間外,它們是空的。

當Sharpie運行時,它會創建兩個文件:ApiDefinitions.csStructsAndEnums.cs。這些是純粹的定義,並不存在於命名空間中。不要將這些文件添加到您的項目中。代替;

  1. 複製的ApiDefinitions.cs所有內容,並在ApiDefinition.cs其粘貼在空的命名空間。
  2. 複製StructsAndEnums.cs的所有內容,並將其粘貼到Structs.cs中的空白名稱空間中。

希望它現在應該建立。

相關問題