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");
        }


    }

}

所以,我的问题是,如何将 aRecording 参数从第一种方法发送到第二种方法?

非常感谢

4

1 回答 1

6
  1. 将该变量存储在成员变量中(最简单的解决方案)
  2. 如果您只传递一个 int 变量,则可以设置 AlertView 标记属性。

     myAlertView.tag  = YOUR_INT;
    
  3. 根据文件

    注意: UIAlertView 类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

    因此,仅当您不打算将应用提交到应用商店时,请使用第三种方法。感谢用户 soemarko ridwan 的提示。

    对于传递复杂对象,子类 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 回答