web-dev-qa-db-ja.com

ストーリーボードをアンワインドセグエに接続できません

アンワインドセグエを作成しようとしていますが、Ctrlキーを押しながらドラッグしても何も接続されません。また、[終了]アイコンを右クリックしても、使用できるオプションはありません。

enter image description here

何か案は?

24
Chris Wagner

タイプ「UIStoryboardSegue *」の引数を取るビューコントローラでIBActionを定義する必要があります。

このようなもの:

@interface MyViewController
...
- (IBAction)unwindFromConfirmationForm:(UIStoryboardSegue *)segue {
}
...
@end

Swift 3バージョン

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {

    //code

}

提供 DoruChideanin https://stackoverflow.com/a/46199117/25019

67
Jon Hess

明確にするために、これをストーリーボードにリンクするには、上記のメソッドを「巻き戻したいビューコントローラー」に追加した後、ボタンまたは「巻き戻したいビューコントローラー」内の任意のものからセグエをドラッグする必要があります。 toそれ自身の下のバーにある小さな緑色の「EXIT」アイコン。

「-unwindFromConfirmationForm」にリンクするポップアップが表示されます。

それが完了すると、アンワインドセグエが機能するはずです。


トラビスの優れた点に追加するだけです:完全に明確にするために:

ストーリーボードの実験を始めたばかりで、(a)新しいiOS7 Xcodeプロジェクトを作成し、(b)1つのナビゲーションコントローラーでストーリーボードを作成し、(c)5つまたは6つのビューコントローラーを作成したとします。アンワインドを使用して、半ダースのビューコントローラー間を行き来できるようにすることを目指しています。 {あるボタンから次のボタンにcontrolキーを押しながらドラッグして「進む」のは簡単です。}

さて、この時点で:6つのビューコントローラはすべて、「デフォルト」クラスの「ViewController」になります。 Xcodeは(やや無意味に)ViewController.hファイルとViewController.mファイルを提供することに注意してください。

繰り返しになりますが、現時点では、6つの「単純な例」ビューはすべて、実際にはそのファイルViewController.mを使用しているだけです。したがって、非常に簡単に、これを追加すると:

-(IBAction)unwindUnused:(UIStoryboardSegue *)segue
    {
    NSLog(@"I did an unwind segway! Holy crap!");
    }

その1つの「スタブ」ファイルViewController.mに-実際には、6つのビューのいずれか1つが「機能する」ようになります。悪名高い小さな緑色の[終了]ボタンにドラッグします。とても簡単です。

現在、実際のプロジェクトでは通常TBCだけなので、デフォルトの「ViewController.m」ファイルを使用することはありません。だから、ここに行きます:

https://developer.Apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/SecondTutorial.html

そして、正確に「カスタムビューコントローラの作成」を見つけてください。もちろん、初心者の場合は、そのプロセスを非常に詳細に説明しています。

しかし、繰り返しになりますが、ただ浮気していて、緑色のボタンを巻き戻しのために機能させたい場合は、コードフラグメントを「ViewController.m」スタブファイルに入れるだけで、すぐに使用できます。 (「実際の生活」では、カスタム画面のそれぞれにそのようなカスタム呼び出しを配置することを覚えておいてください-おそらくデータなどを処理します)それが役立つことを願っています!!

ボーナスfactoid:このようにテストしているときは、とにかく「戻る」ボタンが自動的にナビゲーションバーに表示されます。 (つまり、アンワインドスタブメソッドを追加しない場合でも)。

19
Travis M.

ジョン・ヘスに賛成!これはSwift 3相当

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {

    //code

}
1
DoruChidean

Xcode6-betaバージョンを使用していますか?ベータ1-3では、インターフェイスビルダーがアンワインドセグエを検出できないバグです。 xcode6-beta4では、このバグが修正されています。

0
Fred