在我的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按钮。如果单击其中一个按钮,它将在弹出窗口中显示相应枚举中的选项列表。

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

最佳答案

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

关于ios - 加载通用类型可在模拟器中运行,但不能在设备中运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17754511/

10-08 20:33