11

performSegueWithIdentifier を機能させるのに苦労しています。私は取得し続けます

"Receiver (<UINavigationController: 0x1e59a9d0>) has no segue with
 identifier 'identA'"

私がしたことは次のとおりです。

  1. 手順: 単一のビュー アプリケーションを作成し、ラベル「ビュー コントローラー A」をビュー コントローラーに追加しました。
  2. 手順: 別のビュー コントローラーをドラッグ アンド ドロップし、新しいビュー コントローラーに「ビュー コントローラー B」というラベルを追加しました。
  3. ステップ:View Controller Aを選択し、Editor->embed in->navigation controllerを実行
  4. ステップ:ビューコントローラーAをビューコントローラーBに接続し、識別子「identA」を使用してプッシュセグエを使用します。次のように: シークの配線

  5. ステップ: performSegueWithIdentifier onView コントローラー A の ViewDidLoad への呼び出しを追加しました。このような:


- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.navigationController performSegueWithIdentifier:@"identA" sender:self];
    // Do any additional setup after loading the view, typically from a nib.
}

私は何を間違えましたか?

4

3 に答える 3

26

を呼び出しperformSegueWithIdentifier:sender:self.navigationControllerいますが、次のようにセグエをセットアップしますView controller A

識別子「identA」を使用したプッシュセグエを使用して、View Controller A から View Controller B に有線で接続

置き換えてみてください:

[self.navigationController performSegueWithIdentifier:@"identA" sender:self];

[self performSegueWithIdentifier:@"identA" sender:self];
于 2013-09-27T00:56:37.067 に答える
4

ちょうど別の提案(今日私を救った)...

マスター/ディテール ページ、ナビゲーション コントローラーなどを使用して、以前に多くの iPad および iPhone アプリを作成しましたが、今日、XCode 5.1 の単純な 2 画面 iPhone アプリが 1 つの画面から別の画面へのセグエションを拒否したため、困惑しました。 、UINavigationController 内。

これは、意味をなさない非常識な XCode バグの 1 つです。新しいXCode プロジェクトを作成することもでき、そこでは同じセグエが完全に機能します。

    [self performSegueWithIdentifier:@"segueTest" sender:nil];

やっと、原因がわかりました。

XCode で空のプロジェクトを作成し、自分のプロジェクトにストーリーボードを手動で追加しましたが、手順を見逃していました。

ストーリーボードを自分で追加する場合は、.plist ファイルにも移動し、メインのストーリーボードの名前をアプリに伝える行を手動で追加する必要があります。

ここに画像の説明を入力

奇妙なことに、これを行わないと、アプリ正常にビルドされ、実行され、おそらく最初の画面が正常に表示されるようになります...しかし、その後、(セグエ名の検索など) うまくいかなくなります。

(はぁ。)

これが他の XCode 被害者に役立つことを願っています。

私はビールが必要...

于 2014-03-28T14:25:10.647 に答える