如何在RowSelected事件上导航到Xamarin iOS中的ViewController [英] How to navigate to ViewController in Xamarin iOS on RowSelected event
问题描述
我在导航控制器内部的主屏幕上有一个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屋!