2011-11-24 87 views
1

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

我應該添加視圖窗口呢?有一個更好的方法嗎?

回答

2

這很可能(代碼沒有足夠的上下文來100%確定),因爲newFilesViewController在代碼後面的任何地方都沒有被引用。因此,可以在下次調用垃圾收集器(GC)時進行處理。但是,除了視圖以外,本機代碼仍然存在,並且在嘗試調用(處置的)實例時會崩潰。

修復:將您的newFilesViewController局部變量提升爲某個字段。這將使引用保持活動狀態(只要該類型的實例處於活動狀態),GC將不會收集它。