0

タプクカレンダーを使用しているので、日付が押されたときに手動セグエを起動したいと思います。そこで、セグエしたいビューコントローラ、セグエをインスタンス化してから、セグエを実行します。

DisplayScheduleViewController *vc = [[DisplayScheduleViewController alloc] init];

mySegue = [[UIStoryboardSegue alloc] initWithIdentifier:@"Day G" source:self destination:vc];

[self performSegueWithIdentifier:@"Day G" sender:self];

}

ただし、日付が押されるとプログラムがクラッシュし、これは例外メッセージです。

キャッチされなかった例外「NSInvalidArgumentException」が原因でアプリを終了しました。理由:「Receiver()に識別子「DayG」のセグがありません」

また、プログラムを実行する前に、ストーリーボードに次の警告メッセージが表示されます。

エントリポイントがないためにシーンに到達できず、-instantiateViewControllerWithIdentifier:を介したランタイムアクセス用の識別子がありません。

それを機能させる方法を知っていますか?

ありがとう

4

3 に答える 3

4

ストーリーボードにセグエを接続し、コードから呼び出す方法は次のとおりです。

  1. ストーリーボードに2つのViewControllerを作成します。
  2. ソースシーンのビューコントローラアイコンからデスティネーションシーンへのドラッグを制御します。
  3. 適切なタイプのセグエを選択してください。
  4. インスペクターで、セグエに識別子を割り当てます。
  5. 実行時に、ソースビューコントローラから呼び出します

    [自己performSegueWithIdentifier:<#identifier#> sender:nil];

  6. ソースビューコントローラーの-[UIViewControllerprepareForSegue:sender:]をオーバーライドして、ソースコントローラーと宛先コントローラーの間で状態を渡します。

余談ですが、ストーリーボードからインスタンス化されるカスタムseguesサブクラスを作成するときに、-[UIStoryboardSegue initWithIdentifier:source:destination:]メソッドをオーバーライドできます。このようにストーリーボードのセグエインスタンスを直接作成することはできません。

于 2013-02-15T07:08:37.837 に答える
0

StoryBoards でセグエを設定できない場合は、おそらく新しい xib (Storybards の外部) を設定し、その xib で ViewController を設計し、UIViewController を介してその vc をインスタンス化することをお勧めし initWithNibName: bundle: ますpresentViewController: animated: completion:。これらのメソッドの使用方法がわからない場合は、UIViewController のドキュメントを参照してください。

セグエの使用は、ストーリーボードで設定できる場合にのみうまく機能し、私の知る限り、セグエなしではほとんど役に立ちません。

ところで:あなたが得ている警告は、おそらくストーリーボードで設定したVCに、インスタンス化するための識別子がないことを意味します。その vc の StoryBoard ID インスペクタに移動し、「Storyboard ID」に任意の名前を入力すると、それが抑制されます。

楽しむ

于 2013-02-15T10:26:55.137 に答える
0

この警告:

Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier:.

開始 VC がないことを意味します。これがセグエの問題も引き起こしていると思います。VC をインスタンス化し、上記のコードからセグエを起動しているように見えますが、実際には上記のコードで VC にいますか?

ViewController をストーリーボードに (グラフィカルに) 直接追加し、そのクラスを変更することをお勧めします。これは標準的なプロセスですが、プロジェクトのどこにいるかに基づいて開始できます。

  1. 新しいプロジェクトを開始し、テンプレート「Single View Application」を選択するだけです
  2. プロジェクトのストーリーボードに移動します
  3. ユーティリティ メニュー (右) を開きます。
  4. ユーティリティ メニューの下部にあるリストから 2 番目のビュー コントローラー オブジェクトをドラッグし、それをストーリーボードにドラッグします。これで、2 つのビュー コントローラー (テンプレートに付属しているもの - エントリ ポイントとして自動的に割り当てられるもの) が作成されます。あなたが追加した新しいもの)
  5. ストーリーボードに追加した 2 番目のビュー コントローラーを選択します
  6. ユーティリティメニューの「アイデンティティインスペクター」に移動します
  7. 2 番目の VC のクラスを自分のクラス名に変更します。これで、2 つのビュー コントローラーができました
  8. これで、ストーリーボードに 2 つの VC が作成されました。
  9. これで、最初の VC コードに上記のコードを含めることができます。

お役に立てれば

于 2013-02-15T03:22:24.167 に答える