Esempio n. 1
0
        protected override void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }

            if (disposing)
            {
                this.RemoveFromParentViewController();
                _disposed = true;
                _renderer.Dispose();
                _appearanceTracker.Dispose();
                (this as IDisconnectable).Disconnect();

                foreach (var tracker in ShellSection.Stack)
                {
                    if (tracker == null)
                    {
                        continue;
                    }

                    DisposePage(tracker, true);
                }
            }

            _disposed          = true;
            _displayedPage     = null;
            _shellSection      = null;
            _appearanceTracker = null;
            _renderer          = null;
            _context           = null;

            base.Dispose(disposing);
        }
Esempio n. 2
0
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (disposing && !_disposed)
            {
                _disposed = true;
                _renderer.Dispose();
                _appearanceTracker.Dispose();
                _shellSection.PropertyChanged -= HandlePropertyChanged;

                if (_displayedPage != null)
                {
                    _displayedPage.PropertyChanged -= OnDisplayedPagePropertyChanged;
                }

                ((IShellSectionController)_shellSection).NavigationRequested -= OnNavigationRequested;
                ((IShellController)_context.Shell).RemoveAppearanceObserver(this);
                ((IShellSectionController)ShellSection).RemoveDisplayedPageObserver(this);
            }

            _displayedPage     = null;
            _shellSection      = null;
            _appearanceTracker = null;
            _renderer          = null;
        }
Esempio n. 3
0
        protected virtual void LoadPages()
        {
            _renderer = CreateShellSectionRootRenderer(ShellSection, _context);

            PushViewController(_renderer.ViewController, false);

            var stack = ShellSection.Stack;

            for (int i = 1; i < stack.Count; i++)
            {
                PushPage(stack[i], false);
            }
        }
        protected override void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }

            if (disposing)
            {
                this.RemoveFromParentViewController();
                _disposed = true;
                _renderer.Dispose();
                _appearanceTracker.Dispose();
                _shellSection.PropertyChanged  -= HandlePropertyChanged;
                _context.Shell.PropertyChanged -= HandleShellPropertyChanged;

                if (_displayedPage != null)
                {
                    _displayedPage.PropertyChanged -= OnDisplayedPagePropertyChanged;
                }

                ((IShellSectionController)_shellSection).NavigationRequested -= OnNavigationRequested;
                ((IShellController)_context.Shell).RemoveAppearanceObserver(this);
                ((IShellSectionController)ShellSection).RemoveDisplayedPageObserver(this);

                foreach (var tracker in ShellSection.Stack)
                {
                    if (tracker == null)
                    {
                        continue;
                    }

                    DisposePage(tracker, true);
                }
            }

            _disposed          = true;
            _displayedPage     = null;
            _shellSection      = null;
            _appearanceTracker = null;
            _renderer          = null;
            _context           = null;

            base.Dispose(disposing);
        }