0

このエラーを修正する方法を知りたいです。

します

  QRReader = [ZBarReaderViewController new];
  [self presentViewController:QRReader animated:YES completion:nil];

customoverlayには、呼び出すボタンがあります

 [helpButton addTarget:self action:@selector(goToTips) forControlEvents:UIControlEventTouchUpInside];

-(void)goToTips
{
    [QRReader performSegueWithIdentifier:@"scannerToTips" sender:self];
}

しかし、ボタンを押すと、このエラーが発生します

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<ZBarReaderViewController: 0x3c5350>) has no segue with identifier 'scannerToTips''
4

1 に答える 1

1

OK、コードにいくつかの問題があります...

  1. Seques は、iOS5 (およびそれ以降) で使用する必要がある機能であり、xibs の代わりにストーリーボードを選択した場合にのみ使用します。
  2. 実際にシークを使用する場合は、シークをクリックし、インスペクタに識別子名を入力して、Interface Builder で識別子を定義する必要があります。
  3. シークは宛先コントローラーを自動的にインスタンス化するため、手動で行う必要はありません

したがって、seque の適切な呼び出しは次のようになります。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    ZBarReaderViewController *QRReader = [segue destinationViewController];
    // So to hold a reference and pass any data
}

しかし、あなたの場合、セグエを使用していないと思います...したがって、次のようなコードで問題ありません。

[helpButton addTarget:self action:@selector(goToTips) forControlEvents:UIControlEventTouchUpInside];

-(void)goToTips
{
  QRReader = [ZBarReaderViewController new];
  [self presentViewController:QRReader animated:YES completion:nil];
}

これが役に立ったことを願っています...

于 2012-03-09T09:10:42.787 に答える