无法从xamarin中的tableviewrowselected加载ViewController
本文关键字:tableviewrowselected 加载 ViewController 中的 xamarin | 更新日期: 2023-09-27 18:16:09
在选定的tableviewrowselected上加载一个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
有没有办法在rowSelected.
创建表时,需要将其放在Navigation控制器的上下文中。
UINavigationController nav = new UINavigationController(myTableViewController);
然后,当你想要显示你的DetailViewController时,你可以把它推送到已经存在的导航控制器上。然而,默认情况下,你的TableSource不能访问NavigationController——当你创建TableSource时,你需要给TableView控制器传递一个引用,这样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's 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);