Невозможно загрузить ViewController из таблицы RowSelected в xamarin

1

В выбранной таблице tableview выбрана загрузка класса DetailViewcontroller.

    public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
        {
            if (OnRowSelected != null) {
                OnRowSelected (this, new RowSelectedEventArgs (tableView, indexPath));
            }

                var detailController = new DetailViewController ();
                    UINavigationController controller = new UINavigationController();
                    controller.PushViewController(detailController, true);
}

Не удалось загрузить DetailViewController.

public override void RowSelected (UITableView tableView, NSIndexPath indexPath) 

метод находится в UITableViewSource

Есть ли способ загрузить DetailViewController в rowSelected.

  • 0
    Почему вы создаете новые экземпляры вашего UINavigationController ?
  • 0
    @Larme DetailViewController detailViewController = new DetailViewController (); NavigationController.PushViewController (detailViewController, true); это показывает ошибку. NavigationController не существует в прямом контексте. Поэтому я создал объект UINavigationController.
Теги:
xamarin
iphone
tableview

1 ответ

2
Лучший ответ

Когда вы создаете таблицу, вам нужно разместить ее в контексте контроллера навигации.

UINavigationController nav = новый UINavigationController (myTableViewController);

Затем, когда вы хотите отобразить свой DetailViewController, вы можете нажать его на уже существующий навигационный контроллер. Однако по умолчанию ваш TableSource не имеет доступа к NavigationController - вам нужно будет передать ссылку на ваш контроллер TableView при создании TableSource, чтобы TableSource мог получить доступ к NavigationController:

// in your controller, when you assign the source
this.TableView.Source = new MyTableViewSource(this);

// in your source, keep a class level ref to the parent
MyTableViewController _parent;

// your Source constructor
public MyTableViewSource(MyTableViewController parent) {
  _parent = parent;
}

// finally, in your RowSelected use the _parent reference to access the Nav controller
var detailController = new DetailViewController ();
_parent.NavigationController.PushViewController(detailController, true);
  • 0
    Спасибо, это сработало для меня!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню