由于我正在使用tapku日历,因此我想在按下日期时触发手动segue。所以我实例化了我想要的视图控制器,segue,然后执行segue。
DisplayScheduleViewController *vc = [[DisplayScheduleViewController alloc] init];
mySegue = [[UIStoryboardSegue alloc] initWithIdentifier:@"Day G" source:self destination:vc];
[self performSegueWithIdentifier:@"Day G" sender:self];
}
但是,一旦按下日期,程序就会崩溃,这是异常消息:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'Receiver()没有带标识符'Day G'的segue'
在运行程序之前,我在故事板中收到此警告消息:
由于缺少入口点而无法访问场景,并且没有通过-instantiateViewControllerWithIdentifier的运行时访问标识符:。
你知道怎么做吗?
由于
答案 0 :(得分:4)
以下是如何在故事板中连接segue并从代码中调用它:
在运行时,从源视图控制器调用
[self performSegueWithIdentifier:<#identifier#>发件人:无];
覆盖 - 源视图控制器中的[UIViewController prepareForSegue:sender:],以在源和目标控制器之间传递状态。
顺便说一句, - [UIStoryboardSegue initWithIdentifier:source:destination:]方法可供您在创建将从故事板实例化的自定义segues子类时覆盖。直接创建故事板segue实例不适用。
答案 1 :(得分:0)
此警告:
Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier:.
表示您没有启动VC。我猜这也导致了segue问题。看起来你正在实例化一个VC并从上面的代码中激活一个segue,但你实际上是在上面代码中的VC中吗?
我建议您直接在故事板中添加ViewController(以图形方式)并只更改其类 - 这是一个标准流程,但您可以根据您在项目中的位置开始
希望这有帮助
答案 2 :(得分:0)
如果你不能在StoryBoards中设置一个segue,你最好的机会可能是设置一个新的xib(在Storybards之外),在该xib中设计你的ViewController,然后通过UIViewController实例化那个vc
initWithNibName: bundle:
然后,您可以使用presentViewController: animated: completion:
展示您的vc。
如果您不确定如何使用这些方法,请查看UIViewController的文档,但我发现它们非常不言自明。
如果你可以在故事板中设置它们,那么只使用segues很有效,而AFAIK,如果没有它,它们几乎没用。
顺便说一下:你得到的警告只是意味着你在故事板中可能设置的VC没有标识符来实例化它。转到该vc的StoryBoard身份检查员并在“故事板ID”中输入任意名称将取消该功能。
玩得开心