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
        protected virtual void UpdateHeaderVisibility()
        {
            bool visible = ShellSection.Items.Count > 1;

            if (visible)
            {
                if (_header == null)
                {
                    _header = new ShellSectionRootHeader(_shellContext);
                    _header.ShellSection = ShellSection;

                    AddChildViewController(_header);
                    View.AddSubview(_header.View);
                }
                _blurView.Hidden = false;
                LayoutHeader();
            }
            else
            {
                if (_header != null)
                {
                    _header.View.RemoveFromSuperview();
                    _header.RemoveFromParentViewController();
                    _header.Dispose();
                    _header = null;
                }
                _blurView.Hidden = true;
            }
        }