質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

1558閲覧

2画面分unwindしたい

yuki_kato

総合スコア6

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2017/04/24 16:16

##やりたいこと

前提

  • iosとXCodeは最新(8)です。

StoryBord例

  • 例えば、以上のような画面があり、Buttonと言うボタンを押下するとPushで画面が遷移します
  • Viewは View1 View2 最後の画面、の3つのビューがあります
  • view2は上のボタンでunwindします
  • 最後の画面は
  1. View1へ戻る
  2. View2へ戻る
  • 二つのボタンがあります

目標

  • 最後の画面にて
  • View1へ戻る を押下した場合はView1へunwind
  • View2へ戻る を押下した場合はView2へunwind

させる方法を考えています

###発生している問題・エラーメッセージ

  • 主に方法が見つかっていないのは、view1へのunwindです
  • unwindは、一つ前の画面へしか遷移できないようで、
    仮にStorybord Unwind segueへ、view1のアクションを設定したとしても、遷移しません

イメージ説明
** 一つ前にしか遷移しないと言う認識はそもそも正しいか?確証なし **

ーーー

  • 2回連続で行う方法も行ってみました
    view2へ普通に戻るunwindを使い、unwind先のactionでview1への
    view1へ戻る場合は、フラグを持たせて、
    最後の画面でunwindした後、view1へのperformSegueWithIdentifierメソッドを呼び出します

  • この場合、view2までは戻りますが、そのままview1への遷移は行われませんでした

  • 具体的に言うと、まず最後の画面でunwindを行います

[self performSegueWithIdentifier:@"RETURN" sender:self];
  • unwind先のview2へきて、unwindセグエからアクションが呼び出されます
  • ここですぐ同じようにunwindをします
- (IBAction)unwindToBefor:(UIStoryboardSegue *)segue{ [self performSegueWithIdentifier:@"RETURN" sender:self]; }
  • unwindToBeforで行われた2回目のunwindはできず、view2が表示されたママの状態になります。

ーーー

  • そもそもpushを使わない方がいいのか

ご助言頂けますと、大変ありがたいです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
unwindセグエを使うのではなく、
pushから戻る処理(pop)を利用して遷移することで実現できました。

[self.navigationController popViewControllerAnimated:YES];

最後の画面のViewController上で、
View1へ戻るを押下したとき、アクションとして以下のようにメソッドを連続で実行したところ

[self.navigationController popViewControllerAnimated:YES]; [self.navigationController popViewControllerAnimated:YES];

二つ前の画面までポップされ遷移することができました。
お騒がせいたしました。

投稿2017/04/25 06:07

yuki_kato

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問