ViewController Segue Xamarin
我想实现我已经在iOS中完成的function。 我首先通过Ctrl-click
并drag
viewcontroller to viewcontroller
在viewcontroller to viewcontroller
之间创buildsegue, Ctrl-click
使用segue identifier
到达destinationviewcontroller
。
但是,在Xamarin中,如果没有button,则不能通过Ctrl-click
并drag
来添加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的sender
parameter 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 }