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; }
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; } }