簡體   English   中英

有條件地將單元格數據添加到NSMutable陣列

[英]Conditionally Add Cell Data to NSMutable Array

今天有很多麻煩。 最后決定求助於專家。

我有一個標准的Table View Controller。 每個單元格都有一個帶有輕擊手勢識別器的內置UIImage,可將圖像從綠色的選中標記來回切換為紅色的x。 一切正常。

我現在想做的是寫一條條件語句,說:當圖像是綠色的選中標記時,將單元格textLabel添加到saved NSMutableArray中; 否則,從數組中刪除紅色的x對象(可能早些時候已添加)。 目前,我在兩個帳戶的控制台中都顯示“ null”。

這是原始方法:

-(void)imageTapped:(UIGestureRecognizer*)gesture
{

    UIImageView *selectedImageView=(UIImageView*)[gesture view];
    UIImage *imageRed = [UIImage imageNamed:@"checkmark(red).png"];
    UIImage *imageGreen = [UIImage imageNamed:@"checkmark(green).png"];

    NSString *address = @" ";
    NSString *name = @" ";
    UITableViewCell *cell = [self.placesTableView cellForRowAtIndexPath:self.placesTableView.indexPathForSelectedRow];
    name = cell.textLabel.text;
    address = cell.detailTextLabel.text;
    NSMutableArray *saved = [[NSMutableArray alloc] initWithObjects:@"%@",@"%@", name, address, nil];
    NSString *csv = [NSString stringWithFormat:@"%@, %@", name, address];

    if (selectedImageView.image == imageGreen) {
        selectedImageView.image = imageRed;
        [saved removeObject:csv];
        NSLog(@"Deselected" @"%@", name);
    } else {
        selectedImageView.image = imageGreen;
        [saved addObject:csv];
        NSLog(@"Selected" @"%@", name);
    }
}

編輯:建議的方法(仍然不起作用):

h: @property (strong, nonatomic) NSMutableArray *saved;

L:

- (void)viewDidLoad
{
    _saved = [[NSMutableArray alloc] init];
}

    -(void)imageTapped:(UIGestureRecognizer*)gesture
{

    UIImageView *selectedImageView=(UIImageView*)[gesture view];
    UIImage *imageRed = [UIImage imageNamed:@"checkmark(red).png"];
    UIImage *imageGreen = [UIImage imageNamed:@"checkmark(green).png"];
    NSString *address = @" ";
    NSString *name = @" ";
    UITableViewCell *cell = [self.placesTableView  cellForRowAtIndexPath:self.placesTableView.indexPathForSelectedRow];
    name = cell.textLabel.text;
    address = cell.detailTextLabel.text;
    NSString *csv = [NSString stringWithFormat:@"%@, %@", name, address];
    self.saved = [NSMutableArray array];

    //NSData *imageRedData = UIImagePNGRepresentation(imageRed);
    NSData *imageGreenData = UIImagePNGRepresentation(imageGreen);
    NSData *selectedImageViewData = UIImagePNGRepresentation(selectedImageView.image);

    if ( [selectedImageViewData isEqual: imageGreenData]) {
        selectedImageView.image = imageRed;
        [self.saved removeObject:csv];
        NSLog(@"Deselected" @"%@", name);
    } else {
        selectedImageView.image = imageGreen;
        [self.saved addObject:csv];
        NSLog(@"Selected" @"%@", name);
    }
}

您是不是要每次創建保存的可變數組? 它不會持續到imageTapped方法的結尾。 也許您希望將此NSMutableArray用作屬性(或ivar)並添加到self.saved或從中刪除?

您需要更改UIImage比較邏輯,而不是在NSObject上使用=運算符使用isEqual方法。 這是一個可以幫助您的解決方案代碼。

 -(void)imageTapped:(UIGestureRecognizer*)gesture
 {

     UIImageView *selectedImageView=(UIImageView*)[gesture view];
     UIImage *imageRed = [UIImage imageNamed:@"checkmark(red).png"];
     UIImage *imageGreen = [UIImage imageNamed:@"checkmark(green).png"];
     NSString *address = @" ";
     NSString *name = @" ";
     UITableViewCell *cell = [self.placesTableView  cellForRowAtIndexPath:self.placesTableView.indexPathForSelectedRow];
     name = cell.textLabel.text;
     address = cell.detailTextLabel.text;
     NSMutableArray *saved = [[NSMutableArray alloc] initWithObjects:@"%@",@"%@", name, address, nil];
     NSString *csv = [NSString stringWithFormat:@"%@, %@", name, address];

    NSData *imageRedData = UIImagePNGRepresentation(imageRed);
    NSData *imageGreenData = UIImagePNGRepresentation(imageGreen);
    NSData *selectedImageViewData = UIImagePNGRepresentation(selectedImageView.image);  

    if ( [selectedImageViewData isEqual: imageGreenData]) {
         selectedImageView.image = imageRed;
        [saved removeObject:csv];
        NSLog(@"Deselected" @"%@", name);
    } else {
        selectedImageView.image = imageGreen;
        [saved addObject:csv];
        NSLog(@"Selected" @"%@", name);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM