由于此错误,Segue将无法执行“Receiver(<viewcontroller:)=”“has =”“no =”“segue =”“with =”“identifier”=“”但=“”segue =“”is = “”已识别=“”

时间:2015-11-02 03:02:37

标签: ios objective-c iphone uiviewcontroller segue

=“”

我整天都收到了同样的错误,我明白这说错了在故事板中,但它是。以下是我认为相关的代码: 1.IBAction为按钮发出信号。

-(IBAction)launchScanner:(id)sender{
    NSLog(@"launch Scanner pressed");
    [self performSegueWithIdentifier:@"launchScanner" sender:self];     
}
  1. 这是对segue函数的准备,我暂时把它留空,不确定我是否需要在其中包含一些内容。

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([[segue identifier] isEqualToString:@"launchScanner"]){  
    
    }   
    }
    
  2. 我最初以编程方式创建了所有内容,以下是我实例化导航控制器的方法(这是在appdelegate.m中):

    ViewController *myViewController = [[ViewController alloc] init];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];
    _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _window.rootViewController = navigationController;
    [_window makeKeyAndVisible]; 
    
  3. 此处还有我的故事板设置图片以及识别出segue的证据Image 1 Image 2

2 个答案:

答案 0 :(得分:1)

如果要以编程方式实例化导航控制器,则需要从故事板中获取对它的引用。如果您需要在加载初始VC之前在应用程序委托中执行某些功能,则可以使用此方法。

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    UINavigationController *initialNavVc = (UINavigationController *)[mainStoryboard instantiateInitialViewController];
    self.window.rootViewController = initialNavVc;

答案 1 :(得分:0)

你的故事板中有一个错误。 导航控制器应该是“初始视图控制器”。 请在图片here

中查看突出显示

以下是修正故事板图片enter image description here

的解决方案