1

デリゲートがあり、そのアイテムを引数としてアイテムを削除するようにというメッセージを受け取ります。確認のAlertViewを表示したいのですが、ユーザーが[はい]を押した場合は削除します。

だから、私が持っているのは

呼び出されるデリゲートメソッド:

- (void) deleteRecording:aRecording(Recording*)aRecording {

     NSLog(@"Cancel recording extended view");
     UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle: NSLocalizedString(@"Cancel recording",nil)
                      message: NSLocalizedString(@"Are you sure you want to cancel the recording?",nil)
                      delegate: self
                      cancelButtonTitle: NSLocalizedString(@"No",nil)
                      otherButtonTitles: NSLocalizedString(@"Yes",nil), nil];
    [alert show];
    [alert release];

}

そして、どのボタンが押されたかをチェックするメソッド:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    switch (buttonIndex) {
        case 0:
        {
            NSLog(@"Delete was cancelled by the user");
        }
        break;

        case 1:
        {

            NSLog(@"Delete deleted by user");
        }


    }

}

だから、私の質問は、最初のメソッドから2番目のメソッドにaRecordingパラメーターを送信するにはどうすればよいですか?

どうもありがとう

4

1 に答える 1

6
  1. その変数をメンバー変数に格納する(最も簡単な解決策)
  2. int変数のみを渡す場合は、AlertViewタグプロパティを設定できます。

     myAlertView.tag  = YOUR_INT;
    
  3. ドキュメントによると、

    注:UIAlertViewクラスは、そのまま使用することを目的としており、サブクラス化をサポートしていません。このクラスのビュー階層はプライベートであり、変更しないでください。

    したがって、アプリをアプリストアに送信する予定がない場合にのみ、3番目の方法を使用してください。ヒントをくれたユーザーsoemarkoridwanに感謝します。

    複雑なオブジェクトを渡すには、UIAlertViewをサブクラス化し、オブジェクトプロパティを追加します

    @interface CustomAlertView : UIAlertView
    @property (nonatomic, retain) id object;
    @end
    
    @implementation CustomAlertView
    @synthesize object;
    - (void)dealloc {
        [object release];
        [super dealloc];
    }
    @end
    

    AlertViewを作成するとき

     CustomAlertView *alert = [[CustomAlertView alloc]
                      initWithTitle: NSLocalizedString(@"Cancel recording",nil)
                      message: NSLocalizedString(@"Are you sure you want to cancel the recording?",nil)
                      delegate: self
                      cancelButtonTitle: NSLocalizedString(@"No",nil)
                      otherButtonTitles: NSLocalizedString(@"Yes",nil), nil];
    [alert setObject:YOUR_OBJECT];
    [alert show];
    [alert release];
    

    代表者で

    - (void)alertView:(TDAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
         NSLog(@"%@", [alertView object]);
    }
    
于 2012-10-24T10:42:59.693 に答える