0

私のアプリに特有のことに気付きました。バー ボタンの 1 つをタップしてポップオーバー ビュー コントローラーを開くたびに、もう一度タップすると、その VC の別のインスタンスが開きます (これを続けることができます)。

どうすればこれを止めることができますか? ブール値がアクティブなときにボタンを無効にするためにブール値を使用し、ユーザーが他の手段 (同じ VC ではない画面の一部をタップするなど) で VC を閉じたときに何らかの方法でリセットする必要がありますか?

ブール値の提案を試しました:

私の prepareForSegue メソッドには、次のものがあります。

  if(isActive==false){
        InformationViewController *informationViewController = [segue destinationViewController];

        informationViewController.delegate = self;
            isActive = true;
        }
4

3 に答える 3

1

これはもはや重要ではないかもしれませんが、あなたが提案したブール値のソリューションを 1 つの変更でお勧めします。を移動すると

isActive = true;

モーダルビューが閉じるまで、ボタンは無効のままになると確信しています。

于 2014-01-21T03:22:35.340 に答える
0

はい、グローバルブール値を使用することをお勧めします。ボタンが押されたときに変数をtrueに設定します。

インスタンスを作成する関数で、インスタンスを作成する前に変数がfalseであることを確認してください。

インスタンスが削除されたら、変数をfalseに戻します。

疑似コード(C ++):

bool isActive = false;
void CreateInstance()
{
    if (isActive == false)
    {
        -- code
        isActive = true;
    }
}

void InstanceDestroyed()
{
    -- code
    isActive = false;
}
于 2012-08-28T22:07:00.607 に答える
0

ビューが表示されたらボタンを無効に設定し、ポップオーバー ビューに次のコードを追加できます。

a)ボタンを保持しているビューによって「キャッチ」されるためにポップオーバーが閉じられたら、通知センターを使用して通知を送信し、ボタンを再度有効にします。または...

b) プロトコルを使用して委任パターンを使用し、ポップオーバー ビューが閉じられたときにボタンの再有効化を処理します。

これらのメソッドにはもう少し作業が必要になる場合がありますが、MVC パターンではグローバル変数を使用しないようにしています。

于 2012-08-28T22:15:47.303 に答える