Beispiel #1
0
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (disposing && ShellSection != null)
            {
                ShellSection.PropertyChanged -= OnShellSectionPropertyChanged;
                ((INotifyCollectionChanged)ShellSection.Items).CollectionChanged -= OnShellSectionItemsChanged;

                _header?.Dispose();
                _tracker?.Dispose();

                foreach (var shellContent in ShellSection.Items)
                {
                    if (_renderers.TryGetValue(shellContent, out var oldRenderer))
                    {
                        _renderers.Remove(shellContent);
                        oldRenderer.NativeView.RemoveFromSuperview();
                        oldRenderer.ViewController.RemoveFromParentViewController();
                        oldRenderer.Dispose();
                    }
                }
            }

            ShellSection = null;
            _header      = null;
            _tracker     = null;
        }
Beispiel #2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            _containerArea = new UIView();
            if (Forms.IsiOS11OrNewer)
            {
                _containerArea.InsetsLayoutMarginsFromSafeArea = false;
            }

            View.AddSubview(_containerArea);

            LoadRenderers();

            ShellSection.PropertyChanged += OnShellSectionPropertyChanged;
            ((INotifyCollectionChanged)ShellSection.Items).CollectionChanged += OnShellSectionItemsChanged;

            _blurView = new UIView();
            UIVisualEffect blurEffect = UIBlurEffect.FromStyle(UIBlurEffectStyle.ExtraLight);

            _blurView = new UIVisualEffectView(blurEffect);

            View.AddSubview(_blurView);

            UpdateHeaderVisibility();

            var tracker = _shellContext.CreatePageRendererTracker();

            tracker.IsRootPage     = true;
            tracker.ViewController = this;
            tracker.Page           = ((IShellContentController)ShellSection.CurrentItem).GetOrCreateContent();
            _tracker = tracker;
        }
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (disposing && ShellSection != null)
            {
                ShellSection.PropertyChanged -= OnShellSectionPropertyChanged;
                ShellSectionController.ItemsCollectionChanged -= OnShellSectionItemsChanged;

                _header?.Dispose();
                _tracker?.Dispose();

                foreach (var shellContent in ShellSectionController.GetItems())
                {
                    if (_renderers.TryGetValue(shellContent, out var oldRenderer))
                    {
                        _renderers.Remove(shellContent);
                        oldRenderer.NativeView.RemoveFromSuperview();
                        oldRenderer.ViewController.RemoveFromParentViewController();
                        var element = oldRenderer.Element;
                        oldRenderer.Dispose();
                        element?.ClearValue(Platform.RendererProperty);
                    }
                }
            }

            ShellSection = null;
            _header      = null;
            _tracker     = null;
        }
Beispiel #4
0
        protected override void Dispose(bool disposing)
        {
            if (_isDisposed)
            {
                return;
            }


            if (disposing && ShellSection != null)
            {
                ShellSection.PropertyChanged -= OnShellSectionPropertyChanged;
                ShellSectionController.ItemsCollectionChanged -= OnShellSectionItemsChanged;


                this.RemoveFromParentViewController();

                _header?.Dispose();
                _tracker?.Dispose();

                foreach (var renderer in _renderers)
                {
                    var oldRenderer = renderer.Value;

                    if (oldRenderer.NativeView != null)
                    {
                        oldRenderer.NativeView.RemoveFromSuperview();
                    }

                    if (oldRenderer.ViewController != null)
                    {
                        oldRenderer.ViewController.RemoveFromParentViewController();
                    }

                    var element = oldRenderer.Element;
                    oldRenderer.Dispose();
                    element?.ClearValue(Platform.RendererProperty);
                }

                _renderers.Clear();
            }

            if (disposing)
            {
                _shellContext.Shell.PropertyChanged -= HandleShellPropertyChanged;
            }

            _shellContext   = null;
            ShellSection    = null;
            _header         = null;
            _tracker        = null;
            _currentContent = null;
            _isDisposed     = true;
        }
Beispiel #5
0
        protected override void Dispose(bool disposing)
        {
            if (_isDisposed)
            {
                return;
            }

            if (disposing && ShellSection != null)
            {
                (this as IDisconnectable).Disconnect();

                this.RemoveFromParentViewController();

                _header?.Dispose();
                _tracker?.Dispose();

                foreach (var renderer in _renderers)
                {
                    var oldRenderer = renderer.Value;

                    if (oldRenderer.PlatformView != null)
                    {
                        oldRenderer.PlatformView.RemoveFromSuperview();
                    }

                    if (oldRenderer.ViewController != null)
                    {
                        oldRenderer.ViewController.RemoveFromParentViewController();
                    }

                    var element = oldRenderer.VirtualView;
                    oldRenderer?.DisconnectHandler();
                }

                _renderers.Clear();
            }

            if (disposing)
            {
                _shellContext.Shell.PropertyChanged -= HandleShellPropertyChanged;
            }

            _shellContext   = null;
            ShellSection    = null;
            _header         = null;
            _tracker        = null;
            _currentContent = null;
            _isDisposed     = true;
        }
Beispiel #6
0
        public override void ViewDidLoad()
        {
            if (_isDisposed)
            {
                return;
            }

            if (ShellSection.CurrentItem == null)
            {
                throw new InvalidOperationException($"Content not found for active {ShellSection}. Title: {ShellSection.Title}. Route: {ShellSection.Route}.");
            }

            base.ViewDidLoad();

            _containerArea = new UIView();
            if (Forms.IsiOS11OrNewer)
            {
                _containerArea.InsetsLayoutMarginsFromSafeArea = false;
            }

            View.AddSubview(_containerArea);

            LoadRenderers();

            ShellSection.PropertyChanged += OnShellSectionPropertyChanged;
            ShellSectionController.ItemsCollectionChanged += OnShellSectionItemsChanged;

            _blurView = new UIView();
            UIVisualEffect blurEffect = UIBlurEffect.FromStyle(UIBlurEffectStyle.ExtraLight);

            _blurView = new UIVisualEffectView(blurEffect);

            View.AddSubview(_blurView);

            UpdateHeaderVisibility();

            var tracker = _shellContext.CreatePageRendererTracker();

            tracker.IsRootPage     = true;
            tracker.ViewController = this;

            if (ShellSection.CurrentItem != null)
            {
                tracker.Page = ((IShellContentController)ShellSection.CurrentItem).GetOrCreateContent();
            }
            _tracker = tracker;
            UpdateFlowDirection();
        }