Mar*_*ens 11 objective-c uiviewcontroller pushviewcontroller ios uistoryboardsegue
你怎么能没有推到另一个视图控制器prepareForSegue?
myClassVC *viewController = [myClassVC alloc];
UIStoryboardSegue *segue = [[UIStoryboardSegue alloc] initWithIdentifier:@"pushToMyVC" source:self destination:viewController];
if ([segue.identifier isEqualToString:@"pushToMyVC"]) {
NSLog(@"logging");
myClassVC *viewController = (myClassVC *)[segue destinationViewController];
[self presentViewController:viewController animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*Rob 46
如果要以编程方式调用push segue,请在Interface Builder中为segue指定"storyboard id",然后您可以:
[self performSegueWithIdentifier:"pushToMyVC" sender:self];
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想执行segue,则可以实例化目标视图控制器,然后手动推送到该视图控制器.您需要做的就是确保目标视图控制器在Interface Builder中有自己的"故事板ID",然后您可以:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationController"];
[self.navigationController pushViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)
你说"推"(因此我在pushViewController上面使用过).如果你真的想"呈现一个模态视图控制器",那么第二行是:
[self presentViewController:controller animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,你不必须使用prepareForSegue推向新的场景.仅prepareForSegue当您要将信息传递到目标视图控制器时才使用.否则就不需要了.
显然,如果你没有使用故事板(例如,你正在使用NIB),那么这个过程就完全不同了.但我假设您没有使用NIB,因为prepareForSegue它不适用于该环境.但是如果您使用的是NIB,那将是如下:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36065 次 |
| 最近记录: |