2012-03-20 2 views
0

У меня есть пользовательская ячейка для таблицы, работает отлично,IOS, alertView для конкретного элемента в пользовательской ячейке

Im показывая список продуктов в клетках, когда пользователь прикасается к кнопке «Удалить», я показать предупредительный вид, чтобы подтвердить удаление,

, но мне нужно, чтобы показать имя продукта в предупредительном зрении: "are you sure you want to delete XXX?"

здесь код для моей пользовательской ячейки

Пожалуйста, обратите внимание на призыв к чеке вид в deleteCartButtonPressed

#import "ShoppingCartProductsCell.h" 
#import "Product.h" 


@implementation ShoppingCartProductsCell 

@synthesize categoryNameLabel = _categoryNameLabel; 
@synthesize productNameLabel = _productNameLabel; 
@synthesize quantityPicker = _quantityPicker; 
@synthesize deleteCartButton = _deleteCartButton; 
@synthesize product = _product; 


- (void) dealloc { 
    [_deleteCartButton release]; 
    [_categoryNameLabel release]; 
    [_productNameLabel release]; 
    [_quantityPicker release]; 
    [super dealloc]; 
} 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    //self = [super initWithFrame:frame]; 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
     [self initQuantityPicker]; 
     [self initLabels]; //y picker! 
     [self initButtons]; 

    } 
    return self; 
} 

- (void) initQuantityPicker { 

    CGRect contentRect = self.contentView.bounds; 

    CGFloat boundsX = contentRect.origin.x; 

    self.quantityPicker = [[[BDFDropDownList alloc] initWithFrame:CGRectMake(boundsX+220, 8, 61, 28) popupWidth:90]autorelease]; 


    self.quantityPicker.delegate = self; 

    for (int i = 1; i<=20; i++) { 
     [self.quantityPicker addOptionWithName:[NSString stringWithFormat:@"%d",i] value:[NSNumber numberWithInt:i]]; 
    }  

    [self.contentView addSubview:self.quantityPicker]; 
} 

- (void) initLabels { 

    self.productNameLabel = [[[UILabel alloc]init] autorelease]; 
    self.productNameLabel.textAlignment = UITextAlignmentLeft; 
    self.productNameLabel.backgroundColor = [UIColor clearColor]; 
    self.productNameLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:15]; 
    self.productNameLabel.textColor = [UIColor colorWithRed:102/255.0f green:102/255.0f blue:102/255.0f alpha:1]; 

    [self.contentView addSubview:self.productNameLabel]; 

} 

- (void) initButtons { 

    self.deleteCartButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [self.deleteCartButton addTarget:self action:@selector(deleteCartButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.deleteCartButton setImage:[UIImage imageNamed:@"deleteCartButton.png"] forState:UIControlStateNormal]; 
    [self.contentView addSubview:self.deleteCartButton]; //Calculations For stage 2 




} 

- (void)layoutSubviews { 

    [super layoutSubviews]; 

    CGRect contentRect = self.contentView.bounds; 

    CGFloat boundsX = contentRect.origin.x; 

    CGRect frame; 

    frame= CGRectMake(boundsX+10 ,10, 200, 20); 

    self.productNameLabel.frame = frame; 


    frame= CGRectMake(boundsX+330 ,8, 30, 29); //310 

    self.deleteCartButton.frame = frame; 



} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

- (void) setProduct:(Product*)product { 
    [self setProduct:product withQuantity:0]; 
} 

- (void) setProduct:(Product*)product withQuantity:(NSInteger)quantity { 
    [_product release]; 
    _product = product; 
    [_product retain]; 

    self.productNameLabel.text = product.SKU; 


    self.quantityPicker.delegate = nil; 

    [self.quantityPicker setSelectedIndex:quantity-1]; //testa 
    self.quantityPicker.delegate = self; 

} 



- (void) deleteCartButtonPressed:(id) sender { 
    NSLog(@"Delete "); 

    UIAlertView *deleteAlert = [[UIAlertView alloc]initWithTitle:@"Attention" message:@"Are you sure you want to delete this record?" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; 
    [deleteAlert show]; 
    [deleteAlert release]; 
} 


@end 

Большое спасибо!

ответ

1

Строковые литералы - ваш друг.

- (void) deleteCartButtonPressed:(id) sender { 
     NSLog(@"Delete "); 

     UIAlertView *deleteAlert = [[UIAlertView alloc]initWithTitle:@"Attention" message:[NSString stringWithFormat:@"Are you sure you want to delete %@?", [myTableDatasource objectAtIndex:idx]], delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil]; 
     [deleteAlert show]; 
     [deleteAlert release]; 
    } 

Это, вероятно, лучше, чтобы переместить это из сотового подкласса и в ваш источник данных и делегат, чтобы облегчить чистый код.

Смежные вопросы