添加子视图 - Monotouch

时间:2011-11-24 17:10:39

标签: iphone ios garbage-collection xamarin.ios addsubview

我有一个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.

我应该将视图添加到窗口吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

这很可能(代码没有足够的上下文100%确定),因为newFilesViewController在代码的后面任何地方都没有被引用。因此,可以在下次调用垃圾收集器(GC)时将其处理掉。但是,除了视图之外,本机代码仍然存在,并且在尝试调用(已处置)实例时会崩溃。

修复:将您的newFilesViewController本地变量提升为字段。这将使引用保持活动状态(只要类型的实例处于活动状态)并且GC不会收集它。