UViewControllersを押すカスタムセグエ
-
14-11-2019 - |
質問
私はストーリーボードとしてiBooksのようなフリップ遷移を実装しようとしています。セーブはそれぞれを押すべきです。UinavigationControllersスタックの上/からdestinationViewController
をポップします。
私はMy Segues perform
メソッドにViewControllersをプッシュできますが、POPができません。私のフリップアニメーションを作成した直後にコントローラをポップすると、アニメーションは実行されず、Callbackが実行されない - [[UIApplication sharedApplication] endIgnoringInteractionEvents]
が呼び出されることはありません。
だから私はanimationDidStop:anim:flag
Delegateメソッドを押し込めようとしましたが、FlagがTrueに設定されて呼ばれることはありません。
Delegateメソッドが呼び出される前にセグメントが割り当てられていると仮定します。他に何をすることができますか?
解決
私が完全にこの質問を誤解しているならば、私を許してくださいが、2つのビューコントローラの間で基本的な水平方向のフリップをやり直したいのです。そして、あなたがすでにこれを考え出したとしても、それは同じ質問をしている他の誰かが助けるでしょう。
(1)では、aからBへのモーダルセグューを作成します。識別子(ShowViewControllerB)を与え、遷移を選択します。
(2a)のviewControllerb.h上記の@interface:
@class ViewControllerB;
@protocol ViewControllerBDelegate
- (void)viewControllerBDidFinish:(ViewControllerB *)controller;
@end
.
(2b)代理店としてデリゲートを追加します。
@property (weak, nonatomic) id <ViewControllerBDelegate> delegate;
.
(3a)のViewControllerb.m合成:
@synthesize delegate;
.
(3b)と代理店の代わりに戻る:
- (IBAction)flipBack:(id)sender
{
[self.delegate viewControllerBDidFinish:self];
}
.
(4)のviewControlRera.h非常に上の#import "ViewControllerB.h"
と@interface <ViewControllerBDelegate>
の終わりに追加
(5a)In ViewControlRera.mプロトコルに準拠する方法を追加する:
- (void)viewControllerBDidFinish:(ViewControllerB *)controller
{
[self dismissModalViewControllerAnimated:YES];
}
.
(5b)は、PrepareForsegueのデリゲートとして設定します。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showViewControllerB"]) {
[[segue destinationViewController] setDelegate:self];
}
}
.
これがあなたの質問に答えることを願っています。私が誤解したら、ただ私に知らせてください。
他のヒント
あなたの質問は、Mingle Pop、Push、Flip、Backflipのように少し混乱しています。 AIがあなたの質問に答えることができるかどうかはわかりませんが、私は私がしたことを伝えることができます。
ビューコントローラスタックにViewControllerを押してストーリーボードのSegueスタイルを押すと、右から左へのビューにプッシュされます。戻るボタンが表示され、PresentingViewControllerのタイトルが表示されます。
ストーリーボードSegueスタイルをモーダルに設定した場合、水平方向のフリップに移行することができます(あなたが望むものになるように思われる)。しかし、戻るボタンは表示されません。 PreventedViewControllerでは、ビューを閉じます。
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
.
右のフリップで2番目のビューを裏返します。
しかしこれは汚れた解決策であり、それはりんごによっては推奨されません。
ルケ・デュバートは、代理人を実装する方法の例をあなたに与えました。