...
SecondViewController *svc = [SecondViewController new];
[self presentViewController:svc animated:YES completion:NULL];
}
此代码与我在另一个应用程序中使用的代码完全相同,但在这里我使用的是presentViewController
而不是presentModalViewController
(completion:NULL
使它们实际上相同。至少相同的结果。
创建模态视图的两种尝试的结构方式相同。主视图中的这些行、情节提要中的视图控制器以及匹配的.h
和.m
文件。 唯一的区别是,这里我想要一个编程触发器,所以不可能拖动 segue 并完成它。
我设置了一个对象来识别手势并调用转换方法。这可能是导致问题的原因(至少是部分原因(,但这是必要的。
使用UIButton将是作弊。没有最后期限,没有捷径。
编辑:NSLog输出显示一些奇怪的东西。
2012-04-05 10:41:12.047 MyApp[5962:707] <SecondViewController: 0x1d8c130>
2012-04-05 10:41:12.479 MyApp[5962:707] <SecondViewController: 0x1d8e360>
所以我又在做一些愚蠢的事情,碰巧有一个非常简单的修复,对吧?
再次编辑:presentViewController…
被调用了不止一次。修复了它。不过还是黑色的。
回到performSegueWithIdentifier:sender:
而不是更容易presentViewController:animated:completion:
由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:"接收者...没有标识符的续集...">
我告诉它执行一个 segue,但故事板中没有(我无法添加一个,我尝试使用的对象的"连接检查器"下没有故事板 Segues 部分(,所以它崩溃了。这是正常行为。
我想要的是拥有一个模态视图,而无需创建 segue。我已经做到了,所以我知道这是可能的。
我所需要的只是一点帮助让它工作。
.
performSegueWithIdentifier:@"Identifier" sender:nil
NSSInvalidArgumentException
presentViewController:viewController animated:YES completion:NULL
空视图
知道了。
将问题中的行替换为以下内容:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard"
bundle:nil];
SecondViewController *viewController =
[storyboard instantiateViewControllerWithIdentifier:@"SecondView"];
[self presentViewController:svc animated:YES completion:NULL];
这个解决方案的功劳归功于IturPablo的自我回答问题:
TabBarController,覆盖应该选择视图控制器做一个segue
你在寻找performSegueWithIdentifier:sender:
吗? 文档似乎与您的描述相符:
"你可以调用这个方法来以编程方式触发 Segue,也许 响应某些无法在情节提要中指定的操作 资源文件">