升级后在 Xamarin 中绑定 UIImageView 无效转换
Binding UIImageView invalid cast in Xamarin after upgrade
我最近尝试重新编译一个在较新版本的 Xamarin 中运行的项目。项目编译,但在设备上崩溃并出现无效的强制转换异常。
System.InvalidCastException: 无法从源类型转换为目标类型。
崩溃发生在设计器生成的代码中:
[MonoTouch.Foundation.Connect("turnOnAnimation")]
private MonoTouch.UIKit.UIImageView turnOnAnimation {
get {
object test = this.GetNativeField ("turnOnAnimation");
**this.__mt_turnOnAnimation = ((MonoTouch.UIKit.UIImageView)(this.GetNativeField("turnOnAnimation")));**
return this.__mt_turnOnAnimation;
}
set {
this.__mt_turnOnAnimation = value;
this.SetNativeField("turnOnAnimation", value);
}
}
研究来自 GetNativeField 的 return,我似乎得到了 UIView 而不是 UIImageView:
但是 XIB 中的插座连接到 UIImageView。
据我所知,这段代码在早期版本中运行良好。最近的版本有什么变化还是我应该做些不同的事情?
附加测试显示:
1) 此问题发生在 iPod touch 运行 iOS 版本 7.1.1
上
2)模拟器没有出现问题运行iOS8.1(任意iOS平台)
3) iPhone 运行 8.1.2
上没有出现问题
4) 将 iPod touch 升级到 iOS 8.1.3 解决了这个问题。
我得出结论,这要么是一个 iOS 错误,要么是当前 Xamarin 工具与旧版本 iOS 之间的不兼容。
我最近尝试重新编译一个在较新版本的 Xamarin 中运行的项目。项目编译,但在设备上崩溃并出现无效的强制转换异常。
System.InvalidCastException: 无法从源类型转换为目标类型。
崩溃发生在设计器生成的代码中:
[MonoTouch.Foundation.Connect("turnOnAnimation")]
private MonoTouch.UIKit.UIImageView turnOnAnimation {
get {
object test = this.GetNativeField ("turnOnAnimation");
**this.__mt_turnOnAnimation = ((MonoTouch.UIKit.UIImageView)(this.GetNativeField("turnOnAnimation")));**
return this.__mt_turnOnAnimation;
}
set {
this.__mt_turnOnAnimation = value;
this.SetNativeField("turnOnAnimation", value);
}
}
研究来自 GetNativeField 的 return,我似乎得到了 UIView 而不是 UIImageView:
但是 XIB 中的插座连接到 UIImageView。
据我所知,这段代码在早期版本中运行良好。最近的版本有什么变化还是我应该做些不同的事情?
附加测试显示:
1) 此问题发生在 iPod touch 运行 iOS 版本 7.1.1
上2)模拟器没有出现问题运行iOS8.1(任意iOS平台)
3) iPhone 运行 8.1.2
上没有出现问题4) 将 iPod touch 升级到 iOS 8.1.3 解决了这个问题。
我得出结论,这要么是一个 iOS 错误,要么是当前 Xamarin 工具与旧版本 iOS 之间的不兼容。