ios - 加载通用类型在模拟器中有效,但在设备中无效

标签 ios generics xamarin.ios

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

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

假设我有一种颜色:

public enum Color
{
  Red,
  Green,
  Blue
}

我可以使用如下 View 在应用中查看这些值:

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

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

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

最佳答案

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

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

相关文章:

ios - 我在 MonoTouch 中对 UIButton 进行了子类化,但底层 ObjC 类仍然是 UIButton

c# - 如何在 Mono for Android (monodroid) 和 MonoTouch 中使用 native C++ 库

ios - 没有 segue 的两个 ViewController 之间的委托(delegate)

iphone - 如何向 UITableView 添加一次性部分和部分标题?

ios - 神秘的核心数据故障崩溃

java - 数组中的泛型及其警告信息

ios - 我可以使用 Monotouch.dialog 自定义搜索栏吗

ios - 为什么两个 CGRect 在视觉上不相交?

java 通用调用方法 vs 普通调用

Java 泛型 : Explanation of Example on SO