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