0

在我的 iOS 应用程序中,我有一个自定义 UIView,它显示枚举中列出的值列表。这是通用的,因此同一个类可以与任何 Enum 一起使用:

public class EnumViewer<TEnumType> : UIView
{...}

假设我有一种颜色:

public enum Color
{
  Red,
  Green,
  Blue
}

我可以使用如下视图在应用程序中查看这些值:

var view = new EnumViewer<Color>
//add to parent view, set the frame, etc.

当然,重点是我可以将它重用于任何 Enum 类型。所以我有一个EnumViewer<ThisSet>和一个EnumViewer<ThatSet>,一个Choose This按钮和一个Choose That按钮。如果单击其中一个按钮,它会在弹出窗口中显示来自相应枚举的选项列表。

这在模拟器上完美运行。非常奇怪的问题是,在设备上,而不是在模拟器中,应用程序会感到困惑并显示错误枚举的列表。准确地说,如果单击Choose This,它将显示ThisSet项目列表,但如果单击Choose That,则显示相同的列表。如果您单击Choose That FIRST,它会正确显示ThatSet项目列表,但如果您单击Choose This,它会再次显示ThatSet值列表。我已经验证它实际上每次都在创建视图,但TEnumType实际上是错误的,我不知道为什么。我知道代码是正确的,因为它在模拟器中运行良好。

4

1 回答 1

4

Xamarin.iOS 不支持子类化本机类的泛型类。这最近变成了错误或警告。

于 2013-07-20T13:57:00.953 回答