问题
For an iOS app, I have a story board and multiple controllers, and a segue going from controller GameClass to controller SettingsClass. The segue, in view Controller GameClass has an identifier called GameToSettings:
However, when I want to call the segue from my GameClass:
[self performSegueWithIdentifier: @"GameToSettings" sender: self];
I get the error message
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<GameClass: 0xcf0c550>) has no segue with identifier 'GameToSettings''
I tried many tips I found in other articles (like renaming the storyboard, cleaning the project, changing simulator format, giving another name to the segue, ), but the issue keeps coming.
I've uploaded a version of my code here: http://www.petits-suisses.ch/Issue.zip.
Any suggestion of what I could continue trying ?
Thanks.
回答1:
You should not instantiate your view controller this way:
GameClass *myNewVC = [[GameClass alloc] init];
Instead, use
[[UIStoryboard storyboardWithName:@"storyboard name" bundle:nil] instantiateViewControllerWithIdentifier:@"vc identifier">]
Edit: Take a look at https://github.com/mac-cain13/R.swift
It will allow you to instantiate it easily with autocompletion, type safe method: R.storyboard.main.myViewController
来源:https://stackoverflow.com/questions/25020866/receiver-has-no-segue-with-identifier-when-identifier-exists