从UITableView执行segue到新的视图控制器Xamarin

时间:2018-02-19 13:42:29

标签: c# ios uitableview xamarin xamarin.ios

我有一个Xamarin.iOS应用程序,其中包含一个导航控制器,其中UIViewController内部的视图控制器ViewController.cs中的根(在单个视图应用程序中创建的默认值)是一个具有segue的表视图到一个新的视图控制器。

在下面的故事板中描述。

ViewControllers

表视图由StationsTableViewSource.cs代码控制,该代码继承自UITableViewSource。表视图的源设置在ViewController.cs内。

StationsTable.Source = new StationsTableViewSource(StationPlayer.StationsTitleList)

当我在表格视图中按下一个单元格时,我想要转换到新的视图控制器,但正如我所看到的那样:

  1. 我无法从表视图
  2. 访问父/根/包含视图控制器
  3. 我无法从表格视图访问新视图控制器。
  4. 我的问题是,如上所述设置,如何从嵌套在View Controller中的tableview内的单元格执行segue到另一个View Controller?

    请更正术语 - 在Xamarin / iOS术语上不要太热。

    谢谢大家。

1 个答案:

答案 0 :(得分:1)

首先,我们需要弄清楚你创建了哪个segue?

1.从tableViewCell到新的ViewController。

这意味着:点击PerformSegue() + ctrl并拖动到新的ViewContoller。这样,就不需要手动执行Identifier。当您单击Cell时,它将推送到新的Controller。

2.从ViewContoller到新的ViewController

这意味着:点击ViewContoller + ctrl的底栏,然后拖动到新的ViewController。这样,我们需要单击上面创建的segue,然后设置public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { //use this method we can push to a new viewController //the first parameter is the identifier we set above parentVC.PerformSegue("NewPush", indexPath); } 。单击Cell时,将触发以下事件:

ViewController parentVC;
//You can add other parameters you want in this initial method
public MyTableViewCellSource(ViewController viewController, ...)
{
    parentVC = viewController;
}
  

我无法访问父/根/包含视图控制器   表格视图

当你构建这个来源时,你可以通过你的父母" ViewController如:

PrepareForSegue()

此外,两个segue都会在父ViewController中触发public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender) { if (segue.Identifier == "NewPush") { SecondVC secondVC = segue.DestinationViewController as SecondVC; ...//do some configuration } } 。在此方法中,您可以将参数传递给新的ViewController:

plt.scatter(x="A",y="B",c="C",
            data=df.apply(lambda x: [x.A,x.B,chr(int(1.6*ord(x.C[1])-63.6))], axis=1))

关于如何使用segue,您可以阅读this official documentation了解更多详情。