【问题标题】:MonoTouch fails to open xib file when associated controller is derived from base class当关联控制器从基类派生时,MonoTouch 无法打开 xib 文件
【发布时间】:2011-11-24 09:45:18
【问题描述】:

我创建了一个 UIViewController 派生的基本视图控制器,我的大多数控制器都继承了它:

public abstract class ViewModelViewController<T> :
  UIViewController where T : ViewModelBase
{
...
}

只要一个控制器从这个基础控制器派生出来......

public partial class MainViewController :
  ViewModelViewController<MainPageViewModel>
{
..
}

尝试打开与控制器关联的 .xib 会导致此错误,该错误不会通过重建、重新启动或任何绝望的措施消失:

Error updating Objective-C type information. Argument cannot be null.
Parameter name: type.

ArgumentNullException: Argument cannot be null.
Parameter name: type
  at MonoDevelop.Projects.Dom.Parser.ProjectDom+<GetInheritanceTree>c__Iterator33.MoveNext () [0x0023d] in /private/tmp/source/monodevelop/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDom.cs:164 
  at MonoDevelop.MacDev.ObjCIntegration.NSObjectProjectInfo.ResolveCliToObjc (MonoDevelop.MacDev.ObjCIntegration.NSObjectTypeInfo type) [0x000fb] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/ObjCIntegration/NSObjectProjectInfo.cs:182 
  at MonoDevelop.MacDev.ObjCIntegration.NSObjectProjectInfo.Update () [0x000fe] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/ObjCIntegration/NSObjectProjectInfo.cs:89 
  at MonoDevelop.MacDev.ObjCIntegration.NSObjectProjectInfo.Update (Boolean force) [0x0000c] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/ObjCIntegration/NSObjectProjectInfo.cs:66 
  at MonoDevelop.MacDev.XcodeSyncing.XcodeProjectTracker.UpdateTypes (IProgressMonitor monitor, Boolean force) [0x00034] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs:302 

唯一的解决方法(实际上不是一个选项)是在编辑 xib 之前注释掉整个部分类。这是一场精彩的表演。

有人知道真正的解决方法吗?

【问题讨论】:

  • 你能用你正在使用的 base 和 MainViewController 的构造函数更新你的代码吗?
  • 请在bugzilla.xamarin.com 填写错误报告产品:MonoDeveloper 组件iPhone 插件。谢谢

标签: xamarin.ios monodevelop


【解决方案1】:

this bug 的修复将在下一个 MonoDevelop 更新中进行。

【讨论】:

  • 感谢您的更新。与此同时,用 [Register("ViewModelViewController")] 装饰我的基本控制器似乎可以缓解这个问题。
猜你喜欢
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多