如何在RowSelected事件上导航到Xamarin iOS中的ViewController [英] How to navigate to ViewController in Xamarin iOS on RowSelected event

查看:59
本文介绍了如何在RowSelected事件上导航到Xamarin iOS中的ViewController的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在导航控制器内部的主屏幕上有一个TableView.现在,当被选择的行,我想显示MapView类.

I am having a TableView on my home screen which is inside a Navigation Controller. Now, when a row is selected, I want to show a MapView.

我想访问导航控制器并将MapViewController推入其中.我怎样才能做到这一点?

I want to get access to the Navigation Controller and push a MapViewController into it. How can i achieve this?

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{

}

推荐答案

我假设您的RowSelected方法在您的UITableViewController中,对吗?在这种情况下,这很容易,因为您可以访问自动设置为父级UINavigationController

I assume your RowSelected method is in your UITableViewController, right? In this case, it's easy, as you can access the NavigationController property (defined in UIViewcontroller) which is automatically set to the parent UINavigationController

public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
    var index = indexPath.Row;
    NavigationController.PushViewController (new MyDetailViewController(index));
}

现在,您可能应该使用UITableViewSource,并在那里覆盖RowSelected.在这种情况下,请通过进行构造函数注入来确保UINavigationController可用:

Now, you probably should use a UITableViewSource, and override RowSelected there. In that case, make sure the UINavigationController is available by doing constructor injection:

tableViewController = new UITableViewController();
tableViewController.TableView.Source = new MyTableViewSource (this);

class MyTableViewSource : UITableViewSource
{
    UIViewController parentController;
    public MyTableViewSource (UIViewController parentController) 
    {
        this.parentController = parentController;
    }

    public override int RowsInSection (UITableView tableview, int section)
    {
        //...
    }

    public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
    {
        //...
    }

    public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
    {
        var index = indexPath.Row;
        parentController.NavigationController.PushViewController (new MyDetailViewController(index));
    }
}

MapViewController替换此通用答案中的MyDetailViewController,您应该已经准备就绪.

Replace MyDetailViewController in this generic answer by your MapViewController and you should be all set.

这篇关于如何在RowSelected事件上导航到Xamarin iOS中的ViewController的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆