gpt4 book ai didi

c# - 无法从 xamarin 中的 TableView RowSelected 加载 ViewController

转载 作者:行者123 更新时间:2023-11-29 10:39:47 24 4
gpt4 key购买 nike

在选定的 tableview rowselected 上加载 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 上加载 DetailViewController。

最佳答案

当您创建表格时,您需要将其放置在导航 Controller 的上下文中。

UINavigationController nav = new UINavigationController(myTableViewController);

然后,当您想要显示 DetailViewController 时,您可以将它推送到已经存在的导航 Controller 上。但是,默认情况下,您的 TableSource 无法访问 NavigationController - 您需要在创建 TableSource 时传递对 TableView Controller 的引用,以便 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);

关于c# - 无法从 xamarin 中的 TableView RowSelected 加载 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25113718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com