我有一个MonoTouch标签视图应用程序。在我的一个标签上,当用户点击按钮时,我想显示另一个视图。我使用以下代码执行此操作:
UIView.BeginAnimations("flip");
UIView.SetAnimationDuration(1);
UIView.SetAnimationTransition(UIViewAnimationTransition.FlipFromRight, View, true);
NewFilesViewController newFilesViewController = new NewFilesViewController();
newFilesViewController.View.Frame = new System.Drawing.RectangleF(View.Frame.Top, this.View.Frame.Left, this.View.Frame.Width, this.View.Frame.Height);
View.AddSubview(newFilesViewController.View);
UIView.CommitAnimations();
在新视图中,当我单击按钮时,出现错误:
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
我应该将视图添加到窗口吗?有更好的方法吗?
答案 0 :(得分:2)
这很可能(代码没有足够的上下文100%确定),因为newFilesViewController
在代码的后面任何地方都没有被引用。因此,可以在下次调用垃圾收集器(GC)时将其处理掉。但是,除了视图之外,本机代码仍然存在,并且在尝试调用(已处置)实例时会崩溃。
修复:将您的newFilesViewController
本地变量提升为字段。这将使引用保持活动状态(只要类型的实例处于活动状态)并且GC不会收集它。