/// <summary> /// Rows the selected. /// </summary> /// <param name="tableView">Table view.</param> /// <param name="indexPath">Index path.</param> public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { if (_PickerCell.ItemsSource == null) { tableView.DeselectRow(indexPath, true); return; } _pickerVC?.Dispose(); var naviCtrl = GetUINavigationController(UIApplication.SharedApplication.KeyWindow.RootViewController); if (naviCtrl is ShellSectionRenderer shell) { // When use Shell, the NativeView is wrapped in a Forms.ContentPage. _pickerVC = new PickerTableViewController(this, tableView, shell.ShellSection.Navigation); // Fix height broken. For some reason, TableView ContentSize is broken. _pickerVC.TableView.ContentInset = new UIEdgeInsets(44, 0, 44, 0); var page = new ContentPage(); page.Content = _pickerVC.TableView.ToView();; page.Title = _PickerCell.PageTitle; // Fire manually because INavigation.PushAsync does not work ViewDidAppear and ViewWillAppear. _pickerVC.ViewDidAppear(false); _pickerVC.InitializeView(); BeginInvokeOnMainThread(async() => { await shell.ShellSection.Navigation.PushAsync(page, true); _pickerVC.InitializeScroll(); }); } else { // When use traditional navigation. _pickerVC = new PickerTableViewController(this, tableView); BeginInvokeOnMainThread(() => naviCtrl.PushViewController(_pickerVC, true)); } if (!_PickerCell.KeepSelectedUntilBack) { tableView.DeselectRow(indexPath, true); } }
/// <summary> /// Rows the selected. /// </summary> /// <param name="tableView">Table view.</param> /// <param name="indexPath">Index path.</param> public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { if (_PickerCell.ItemsSource == null) { tableView.DeselectRow(indexPath, true); return; } var naviCtrl = GetUINavigationController(UIApplication.SharedApplication.KeyWindow.RootViewController); _pickerVC?.Dispose(); _pickerVC = new PickerTableViewController(this, tableView); BeginInvokeOnMainThread(() => naviCtrl.PushViewController(_pickerVC, true)); if (!_PickerCell.KeepSelectedUntilBack) { tableView.DeselectRow(indexPath, true); } }