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

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

新規登録して質問してみよう
ただいま回答率
85.49%
iOS

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1307閲覧

SNS等で使用されている画面遷移の実装方法

mayo_

総合スコア2

iOS

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/02/05 07:30

前提・実現したいこと

TwitterやInstagram、その他多くのアプリで採用されているプッシュ画面遷移
かつ、前画面にスワイプで戻れる機能

疑問点

初めてSNSを実装するため、画面遷移の概念についてご教示いただきたく思います。

多くのアプリやSNSで採用されている、

該当の項目をクリック→画面遷移→右スワイプで前画面に戻る

という機能を実装したいのですが、この機能は「Navigation Controller」で実装されているのでしょうか?

知人に聞いた際に、「Navigation Controller」での実装はAppleの規定上よろしくない(推奨されている動作と実装しているものが違う)との指摘をいただいたのですが、「Navigation Controller」を使わない実装方法が分からず困っています

そもそもの概念として、多くのアプリでは「Navigation Controller」を使わず、コードでスワイプでの前画面処理や遷移を実装しているのか教えてください

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

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

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

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

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

guest

回答2

0

ベストアンサー

UIKit では UINavigationController ですね。iOS プログラミングの基本なので、安心して使ってください。
「Appleの規定上よろしくない」なんて聞いたことがありません。よろしくなかったらとっくに廃止されてるはずです。
参考: 今更だけどUINavigationControllerについて学びなおそう! - Qiita

SwiftUI では NavigationView ってやつを使います。
参考: [SwiftUI] NavigationView の簡単なサンプル - Qiita

投稿2021/02/05 07:53

hoshi-takanori

総合スコア7895

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

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

TsukubaDepot

2021/02/05 09:02

hoshi-takanoriさんの回答の補足です。 Apple の Human Interface Guidelines から Gesture の項目を見るとこのような記述を見つけることができます。 https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/gestures/ [Offer shortcut gestures to supplement, not replace, interface-based navigation and actions.] Whenever possible, offer a simple, visible way to navigate or perform an action, even if it means an extra tap or two. Many system apps include a navigation bar that provides a clear, tappable button back to the previous screen. But users can also navigate back by swiping from the side of the screen. On iPad, people can exit to the Home screen by pressing the Home button, or by using a four-finger pinching gesture. なので、「ジェスチャだけに頼ったショートカットは推奨されないが、ボタン動作の補助としてジェスチャを使うことはできる」ということになるかとおもいます(タイトルと本文の内容がやや食い違うところもありますが、基本はタイル通り補助(supplemental)として使うことが可能、という解釈かと思います)。 実際、UINavigationController を使うと、標準で右スワイプ(画面左エッジから右側へのスワイプ)を用いることによって元の画面に戻る機能が実装されていますので、特別な実装は不要です。
mayo_

2021/02/05 11:30

詳しく解説いただきありがとうございます! つまり知人の言っていた内容に対する公式の内容としては、「Navigation Controller」などでできるスワイプ操作がどこでもできるのは推奨されていないが(プロフィールから設定画面の飛ぶなどの重要な操作)、全て頼り切るような内容でなければバンバン使用して大丈夫ですよー といった感じでしょうか?
TsukubaDepot

2021/02/05 11:52

これは公式を読んでいたくしかないのですが、「標準的なジェスチャ操作に沿って適切なジェスチャを実装しなさい(意訳)」ということに尽きるかと思います。試しに DeepL のような機械翻訳で和訳させたりしてみましたが、一応それっぽい内容で出てきますので、原文で意図がよく掴めないということであれば、機械訳も併用して読まれると良いかと思います。 バンバン使っていいかというと、「使っていい」とは書いてありませんし、「Unless your app is a game in active gameplay, redefining the meaning of standard gestures leads to confusion and complexity.」にあるように、ゲーム以外の目的で標準的なジェスチャを本来意図した以外の目的で使うと、混乱や(デバイス使用の)困難さをもたらす、ともありますから、それに従う必要があるかと思います。 実際、何らかのアプリを立ち上げている状態でも、iOS13あたりからはエッジからのスワイプジェスチャはすでに4種類(下、上、左右から中央)の標準ジェスチャが備わっていますし、UITableView を使うとセルに対する左右のジェスチャや長押しによる操作、UINavigationController だとエッジからの右スワイプで戻る操作とかなりの数を占めますから、使えるジェスチャの種類はかなり限られてくると思います。 ジェスチャ操作に限らず、いわゆるユーザインタフェースというのは、人間の暗黙知やそれまでの経験から得られたアフォーダンスにしたがってデザインされたもの(洗練されたもの)が多くを占めています。なので、基本的にはこれまでに使われてきたジェスチャとその用途をよく研究し、それに沿ったインタフェイスをデザインするというのが基本原則だと思いますし、特に Apple の製品はそのようなデザインを尊重する傾向にあります。 もちろん、ジェスチャも自然言語と同じで時代を経るに従い意図とする動作も変わってくるでしょうから、新しい解釈を付け加えるのは自然な流れだと思いますが、それはあくまで従前の使い方をよく研究してから、ということになるかとおもます。 また、ジェスチャ操作の多くは視覚的効果を伴って初めて意図した使われ方をするものも多いですので、どのように併用すべきかも注意深く考えるべき問題かと思います。
guest

0

「この機能は「Navigation Controller」で実装されているのでしょうか」 -> そのようなことはわかりません。Navigation Controllerがあれば、どこから遷移して来たかわかります。よってどこへ戻れ、と指定しなくても前の画面(あるいは一番先頭の画面)に戻ることができます。Navigation Controllerが一見ないように見えても、それを見えなくすることができるので、見えないからといって、外見上それが使われていないとは限りません。

「Navigation Controller」を使わない実装方法 -> そうような方法は聞いたことがないですね。Googleかなんかで「swift uiviewcontroller transition without navigation controller」とか訊くいてみましたか?きっとどこで訊いても、「不可能」という返事が返ってくると思いますが。もしどうしてもNavigation Controllerを使わずに変遷したいんだったら、Segueで確かできるんじゃないですか?もちろんそれだと、swipeで変遷したことにはならないですけど。

投稿2021/02/05 08:01

tomato879241

総合スコア133

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問