如何从UICollectionElementKindSection.Header转换为NSString



我正在使用Xamarin.iOS。如何将UICollectionElementKindSection.Header转换为NSString

错误CS1503:参数#1' cannot convert UIKit.UICollectionElementKindSection表达式类型为"Foundation.NStrings"(CS1503)

我尝试了以下方法:

UICollectionElementKindSection.Header.ToString();
(NSString)UICollectionElementKindSection.Header;
(string)UICollectionElementKindSection.Header;

每次我都会遇到构建错误。

为了类型安全,UICollectionElementKindSectionHeader(和其他值)映射到枚举UICollectionElementKindSectionKey。这使得代码完成(在IDE中)更加容易,并消除了代码中潜在的打字错误。

将枚举值转换为string(然后是NSString)是可能的,但这不会创建与ObjC应用程序使用的相同的NSString常量(甚至更少,因为有时苹果使用指针而不是字符串内容来进行常量比较)。

如果您需要使用不使用enum但需要该常量的API,您可以这样做:

IntPtr uikit = Dlfcn.dlopen (Constants.UIKitLibrary, 0);
NSString header = Dlfcn.GetStringConstant (uikit, "UICollectionElementKindSectionHeader");

注意:如果这是Xamarin.iOS.dll的API部分,请告诉我们。我们要么公开常量,要么提供一个接受枚举的重载。

(NSString)UICollectionElementKindSection.Header.ToString()不再抛出构建错误。我的应用程序仍然无法工作,但这是另一个原因。

最新更新