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.
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)
{
}
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));
}
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));
}
}
Replace MyDetailViewController in this generic answer by your MapViewController and you should be all set.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With