예제 #1
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                MessagingCenter.Unsubscribe <IVisualElementRenderer>(this, UpdateToolbarButtons);

                foreach (var childViewController in ViewControllers)
                {
                    childViewController.Dispose();
                }

                if (_tracker != null)
                {
                    _tracker.Dispose();
                }

                _secondaryToolbar.RemoveFromSuperview();
                _secondaryToolbar.Dispose();
                _secondaryToolbar = null;

                _parentMasterDetailPage = null;
                Current = null;                 // unhooks events

                var navPage = (NavigationPage)Element;
                navPage.PropertyChanged -= HandlePropertyChanged;

                var navController = ((INavigationPageController)navPage);
                navController.PushRequested             -= OnPushRequested;
                navController.PopRequested              -= OnPopRequested;
                navController.PopToRootRequested        -= OnPopToRootRequested;
                navController.RemovePageRequested       -= OnRemovedPageRequested;
                navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested;
            }

            base.Dispose(disposing);
            if (_appeared)
            {
                ((Page)Element).SendDisappearing();

                _appeared = false;
            }
        }