iOSでの左から右へのネイティブセグエ

すぐに警告します、これはトリックです。 すべての人に適しているわけではなく、常にそうとは限りませんが、メインの左側に何らかの情報を含むウィンドウを表示する必要がある場合、私の方法は適切です。

誰もがすでにそれを知っている可能性があり、私は自転車を発明しましたが、 ネイティブのセグエを左から右に数日間無駄にしようとした後、私は自分で自転車を発明したので、それを共有できてうれしいです。

手始めに、ちょっとした入力。 セグエは、iOSで画面を変更する方法です。 最も人気のあるバリエーションの1つはプッシュ(show iOS 8、show)です。 プッシュセグエは、常に現在のビューを右から左に置き換えます。 つまり、右側に2番目のウィンドウがあり、ボタンをクリックすると、左側に移動して最初のウィンドウが置き換わります。

加入者を選択すると、電話帳にこの動作が表示されます。 同時に、前のウィンドウに戻るためのボタンが上部に表示され、それをクリックすると、目的のアニメーションが左から右に表示されます。

問題は、私が同じことをする必要があるということですが、それをミラーリングするための標準的な方法はありません(Googleによると)。 同様のアニメーションでカスタムセグエを作成する方法については多くの指示がありますが、ネイティブプッシュに比べて不自然で目をつぶっています。

結果は次のとおりです。



標準メソッドと0%カスタムアニメーションのみが使用されます。 GitHubの準備ができた例

アイデア


主なトリックは、新しいセグエを作成せず、意図したとおりにネイティブプッシュを使用することです。

このスクリーンショットからその意味は明らかだと思います。 開始ウィンドウはInfoで、左側に表示する必要があります。 有効にすると、アニメーションなしで、プッシュセグエを使用してメインウィンドウをすばやく静かに表示します。 その後は、unwindFromViewControllerを使用して既に戻ることができます。 ユーザーだけがそれについて知らず、滑らかで美しい左から右へのセグエを見る。

実装


要素を相互に接続し、カスタムクラスを割り当てる方法については説明しません。皆さんはすでにこれを知っていると確信しています。 いずれにしても、GitHubからソースをダウンロードして確認できます。

カスタムセグエとInfoViewControllerの2つのアイコンが必要です。

情報ウィンドウで、右側に家のアイコンが付いたボタンを1つ追加します。 次に、通常のプッシュ(表示)セグエでメインウィンドウに接続します。

UIViewControllerの子孫であるカスタムクラスInfoViewControllerを作成し、その情報ウィンドウを割り当てます。
#import "InfoViewController.h" @interface InfoViewController () @end @implementation InfoViewController //     Main    //  custom segue   FastSegue - (void) viewDidLoad { [self performSegueWithIdentifier:@"FastSegue" sender:nil]; } //       Info - (IBAction)unwindFromViewController:(UIStoryboardSegue *)sender { } @end 


次に、アプリケーションの起動時にメインウィンドウを静かに表示するカスタムセグエを作成する必要があります。
 #import "FastSegue.h" @implementation FastSegue //  push segue,    - (void) perform { [[[self sourceViewController] navigationController] pushViewController:[self destinationViewController] animated:NO]; } @end 

次に、このカスタムセグエコントローラーInfo with Mainへのリンクを作成する必要があります。 この接続には、識別子FastSegueを割り当てる必要があります。



事は小さいです-メインウィンドウのボタンをクリックすると情報ウィンドウに戻ります。 デフォルトでは、矢印と前のウィンドウの名前で戻るボタンが生成されるため、これはオプションの部分ですが、アイコンが必要です。
さらに、判明したように、backBarButtonItemを独自の要素に置き換えると、通常のセグエのように左から右へのジェスチャーで情報ウィンドウを開くことができません。

そのため、UINavigationItemおよびleftBarButtonItem要素をメインウィンドウに追加して、自動生成されたネイティブbackBarButtonItemを置き換えます。 「i」アイコンを画像として選択すると、アプリケーションの起動時にボタンが正常に表示されます。 何もしません。

backBarButtonItem機能を置き換えるために、アクションunwindFromViewControllerを割り当てる必要があります。そのため、情報ウィンドウコントローラーで指定しました。

したがって、ボタンを終了ポイントに接続し、unwindFromViewControllerを選択します。

以上です!
また、目に見えない起動スイッチには、LaunchImageまたはLaunchScreenが必要ですが、それらがなければアプリケーションはありません。

私がここで完全なナンセンスと松葉杖を書いたように思えるなら、私はあなたの解決策を見てそれを実践することをうれしく思います。 私にとっても、この方法はまったく正しくないと思われ、特に普遍的はありませんが、必要に応じて機能し、見栄えがよくなります!

ご清聴ありがとうございました。

更新しました

古いビデオをテーブルを使用して、少し視覚的なものに置き換えました。

更新2

結局のところ、これは松葉杖ではなく、「異常な行動」ではありません。 ネイティブメールアプリも同じように機能します。

メールを開く-一度に文字が表示され、上部にすべてのメールボックスを開くボタンがあります。 それをクリックすると、左から右のセグエ、ほとんどの場合、まったく同じことが行われます。 つまり、2番目のウィンドウへの予備的な目立たない巻き戻しです。

アップル自身が長い間使用してきたものを再発明したことがわかりました。 同意しないすべての人にこんにちは。

Source: https://habr.com/ru/post/J239093/


All Articles