在我的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/