我有一个委托,它会收到一条消息,删除一个以该项为参数的项目。 我想显示确认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参数从第一种方法发送到第二种方法呢?
非常感谢
答案 0 :(得分:6)
如果您只传递一个int变量,则可以设置AlertView标记 属性。
myAlertView.tag = YOUR_INT;
注意: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]);
}