Xamarin.iOS无法找到BaseType属性指定的类型。

7

我正在研究Objective-C协议和委托,并尝试在Xamarin.iOS中实现自定义协议。我遵循了Xamarin文档中“绑定协议”的示例。

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

}

由于某些原因,我无法找到BaseType属性。我无法引用它。我目前项目的名称空间列表如下:

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

我希望它应该在System或MonoTouch.ObjCRuntime下。有谁能给点提示吗?我查看了StackOverflow上其他涉及绑定协议的问题,许多示例都显示相同的MonoTouch使用方式。
谢谢

在最近的构建中,实际上存在一个关于XS的问题。请参见此错误(https://bugzilla.xamarin.com/show_bug.cgi?id=52553)。 - bunkerdive
3个回答

7

请确保您正在使用iOS绑定项目

在此输入图片描述


也许我应该再澄清一下。我们是否能够生成自己的C#协议?我并非试图从本地库进行绑定。我知道我可以使用.NET事件,但我更感兴趣的是使用委托方法,因为我想在UITableView层上触发一些委托方法。我猜我正在进行这项工作以查看是否可能。不过,我越想越觉得基类型属性并不是必要的。 - JamWils
啊,我明白了。没错,Xamarin.iOS API 有委托(Delegates),你可以像在 C# 中实现接口一样实现它们。这个文档应该能帮助你入门:http://docs.xamarin.com/guides/ios/application_fundamentals/delegates,_protocols,_and_events/ - dalexsoto

2

[BaseType] 属性仅在“iOS 绑定项目”类型的项目中使用,不可在运行时使用。

因此,请确保您正在执行将由 btouch 工具处理并为本机库生成绑定的“iOS 绑定项目”。


0

我曾经遇到过同样的问题,因为我只是盲目地将Sharpie创建的文件添加到我的项目中而没有思考。

当您创建一个新的iOS绑定库时,它会创建两个文件:ApiDefinition.csStructs.cs。除了与项目名称匹配的命名空间外,这些文件都是空的。

运行Sharpie时,它会创建两个文件:ApiDefinitions.csStructsAndEnums.cs。这些是纯定义,不存在于命名空间中。不要将这些文件添加到您的项目中。相反,您应该:

  1. 复制ApiDefinitions.cs的所有内容,并将其粘贴到ApiDefinition.cs中的空命名空间中。
  2. 复制StructsAndEnums.cs的所有内容,并将其粘贴到Structs.cs中的空命名空间中。

希望现在可以构建成功。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接