5


OK/キャンセルボタンを備えた 2 つの UIAlertViews があります。
次の方法でユーザーの応答をキャッチします。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

私が抱えている質問は、現在開いているalertViewはどれですか?
それぞれでOK/キャンセルをクリックするときに行うアクションが異なります...

4

2 に答える 2

20

いくつかのオプションがあります:

  • アイバーを使用します。アラート ビューを作成する場合:

    myFirstAlertView = [[UIAlertView alloc] initWith...];
    [myFirstAlertView show];
    // similarly for the other alert view(s).
    

    デリゲート メソッドでは、次のようになります。

    - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
        if (alertView == myFirstAlertView) {
            // do something.
        } else if (alertView == mySecondAlertView) {
            // do something else.
        }
    }
    
  • tagのプロパティを使用しUIViewます。

    #define kFirstAlertViewTag 1
    #define kSecondAlertViewTag 2
    

    UIAlertView *firstAlertView = [[UIAlertView alloc] initWith...];
    firstAlertView.tag = kFirstAlertViewTag;
    [firstAlertView show];
    // similarly for the other alert view(s).
    

    - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
        switch (alertView.tag) {
            case kFirstAlertViewTag:
                // do something;
                break;
            case kSecondAlertViewTag:
                // do something else
                break;
        }
    }
    
  • サブクラスUIAlertView化してプロパティを追加しuserInfoます。このようにして、アラート ビューに識別子を追加できます。

    @interface MyAlertView : UIAlertView
    @property (nonatomic) id userInfo;
    @end
    

    myFirstAlertView = [[MyAlertView alloc] initWith...];
    myFirstAlertView.userInfo = firstUserInfo;
    [myFirstAlertView show];
    // similarly for the other alert view(s).
    

    - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
        if (alertView.userInfo == firstUserInfo) {
            // do something.
        } else if (alertView.userInfo == secondUserInfo) {
            // do something else.
        }
    }
    
于 2012-10-04T16:20:19.237 に答える
1

UIAlertViewはサブクラスであるため、そのプロパティを識別にUIView使用できます。tagしたがって、アラートビューを作成するときにそのタグ値を設定すると、次のことができるようになります。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
   if (alertView.tag == kFirstAlertTag){
      // First alert
   }
   if (alertView.tag == kSecondAlertTag){
      // First alert
   }
}
于 2012-10-04T16:19:21.363 に答える