ViewController Segue Xamarin

我想实现我已经在iOS中完成的function。 我首先通过Ctrl-clickdrag viewcontroller to viewcontrollerviewcontroller to viewcontroller之间创buildsegue, Ctrl-click使用segue identifier到达destinationviewcontroller

但是,在Xamarin中,如果没有button,则不能通过Ctrl-clickdrag来添加Segue。 我想知道是否有一种方法可以实现本native iOS提供的相同function? 我跟着下面的教程,但它是基于button segue ,而不是viewcontroller to viewcontroller segue 。 http://developer.xamarin.com/guides/ios/user_interface/introduction_to_storyboards/

Xamarin

  public override void RowSelected (UITableView tableView, NSIndexPath indexPath) { UIStoryboard board = UIStoryboard.FromName ("MainStoryboard", null); SecondViewController sVC = (SecondViewController)board.InstantiateViewController ("SecondViewController"); ctrl.ModalTransitionStyle = UIModalTransitionStyle.CoverVertical; iv.PresentViewController(sVC,true,null); } 

//在iOS代码中

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self performSegueWithIdentifier:@"isDetail" sender:self]; } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"isDetail"]) { SecondViewController *fVC = [segue destinationViewController]; } } 

您可以在两个视图控制器之间通过Ctrl-Click并从源视图控制器底部的灰色区域dragging到第二个视图控制器(请参阅图像)来添加一个循环。 可以像在故事板表面上的任何其他控件一样,在属性窗格中编辑segue的属性(如过渡样式)。

当你想使用segue时,很容易:

 PerformSegue ("detailSegue", this); 

其中detailSegue是在故事板中设置的segue标识符。 然后在PrepareForSegue做你的初始化:

 public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender) { if (segue.Identifier == "detailSegue") { SecondViewController = segue.DestinationViewController; // do your initialisation here } } 

假设(查看示例代码),您希望目标视图控制器的初始化依赖于表视图中选定的行。 为此,您可以添加一个字段到您的视图控制器来保存所选的行,或者“滥用”PerformSegue的senderparameter passingNSIndexPath:

 public override void RowSelected (UITableView tableView, NSIndexPath indexPath) { this.PerformSegue ("detailSegue", indexPath); // pass indexPath as sender } 

接着:

 public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender) { var indexPath = (NSIndexPath)sender; // this was the selected row // rest of PrepareForSegue here }