[ios]射击界限从一个不同的视图

标签: ios Objective-C
发布时间: 2017/3/21 22:55:21
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有导航从 FirstViewController 到 SecondViewController 的界限。通过按下一个按钮,这种情况发生。按钮的代码是

- (IBAction)segue:(id)sender {
[self performSegueWithIdentifier:@"myIdentifier" sender:self];
}

发生这种情况正确时按下按钮。

我想做是火此方法从另一种观点。我试着做

FirstViewController fvc = [[FirstViewController alloc] init];
[fvc segue:nil];

当我尝试这个方法时,我得到错误消息,接收器没有铺垫与标识符 'myIdentifier'

我如何解雇这铺垫以编程的方式从另一种观点?

解决方法 1:

有几个问题在这里,但他们都归结到几个关键点︰

  • 结束后紧接着就是 storyboard 的东西,所以视图控制器只是"知道"关于segues如果他们从实例化 storyboard
  • 一个视图控制器必须在屏幕上执行界限。
  • 结束后紧接着就是从一个特定的视图控制器过渡到另一个特定的视图控制器。

所以,在你的代码片段︰

FirstViewController fvc = [[FirstViewController alloc] init];
[fvc segue:nil];

第一个问题是, alloc - init -ing 给你的一个实例 FirstViewController ,不知道任何关于 storyboard 它来自你的所以它不知道任何关于segues。(这独自可以修复使用 [ instantiateViewControllerWithIdentifier: ] [1],但这并不能解决你的整个问题。)第二个问题是,此实例不适合任何地方到 UI 层次结构中 — — 它还没有被提出作为modal视图控制器,它不是在当前Navigation Controller的顶视图控制器,它是不可见的窗口根视图控制器等。为了过渡到另一个屏幕从一种观点认为,第一种观点需要在屏幕上。

它听起来的你想要做的是从什么是当前屏幕上的这个界限的目标过渡。但概念 storyboard 铺垫不只是一个过渡的目标 — — 它是源、 目的地和过渡或它们之间的关系。如果你有一个不同的源视图,您需要不同的界限。所以,如果你已经有界限从 FirstViewControllerSecondViewController ,并且想要作出类似的过渡从 OtherViewController (假设这一个屏幕上现在) 到 SecondViewController ,您需要使第二个界限连接 OtherViewControllerSecondViewController

官方微信
官方QQ群
31647020