1

質問 ストーリーボードのセグエの発生を拒否するにはどうすればよいですか?

コンテキスト: 表示されている最初のView Controllerのオプションの静的なグループ化されたテーブルビューがあります(表示される場合はメインメニュー)。

私は意図的にUIを早期に表示して、ユーザーが対話し、高速の負荷応答を認識する機会を提供します。たとえば、データをインポートする可能性のある他の操作は、バックグラウンド操作キューで発生します。私のUI関数のほとんどは実際に準備ができており、表示されるとすぐに使用できるようになります。

ただし、特に1つのメニュー項目(テーブル行)は、一部のデータがインポートされるまで準備ができていません(すべての準備ができたら通知を送信します)。

このアクションではストーリーボードのセグエを削除することはできましたが、特定の条件が満たされていないためにセグエの発砲を禁止する方法を考えました。

私はおそらく実際にセグエを許可し、待機している通知を受信するまで宛先ビューコントローラーに初期化を制限させます。

しかし、プログラムでセグエを傍受して止めることはできますか?

4

3 に答える 3

3

iOS 6.0以降では、-[UIViewController shouldPerformSegueWithIdentifier:sender:]メソッドをオーバーライドしてNOを返すことにより、通常はトリガーとなるアクションが発生した後にセグエが発生するのを防ぐことができます。

于 2013-04-26T06:46:07.923 に答える
1

代わりにコントローラー自体からのセグエを使用して、performSegueWithIdentifierを使用してセグエを実行し、この特定のセグエをテストして実行するかどうかを決定するプログラムセグエを実行できます。

于 2012-08-23T02:25:51.977 に答える
0

リファレンスで説明されているように、UIStoryboardSegueをサブクラス化できます。

可能な実装:

.h

@interface MYPushNoAnimationSegue : UIStoryboardSegue
@end

.m

#import "MYPushNoAnimationSegue.h"

@implementation MYPushNoAnimationSegue

- (void)perform {
    if (condition) {
        [[(UIViewController *)self.sourceViewController navigationController] pushViewController:self.destinationViewController animated:NO];
    }
}

@end

これで、ストーリーボードで既存のセグエを選択し、そのスタイルをカスタムに設定して、属性インスペクターのセグエクラスにMYPushNoAnimationSegueと入力できます。

私は多くの時間が経過したことを知っています、多分あなたはすでにそれを解決しました、しかしそれは同じ問題に直面している他の人を助けるかもしれません。

于 2013-04-25T12:48:55.487 に答える