Добавить Subview - Monotouch - PullRequest
       11

Добавить Subview - Monotouch

1 голос
/ 24 ноября 2011

У меня есть приложение для просмотра вкладок 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 Ответ

2 голосов
/ 24 ноября 2011

Это вероятно (код не имеет достаточного контекста, чтобы быть уверенным на 100%), потому что newFilesViewController нигде не упоминается позже в коде.Как таковой он может быть утилизирован при следующем вызове сборщика мусора (GC).Однако собственный код все еще, кроме view , существует, и он будет аварийно завершать работу при попытке вызова (удаленного) экземпляра.

Исправление: Повышение вашего newFilesViewControllerлокальная переменная в поле.Это сохранит ссылку (пока экземпляр типа жив), и сборщик мусора не будет ее собирать.

...