ios - 有条件地将单元格数据添加到 NSMutableArray

标签 ios iphone objective-c uitableview

今天遇到了很多麻烦。最后决定求助于专家。

我有一个标准的 TableView Controller 。每个单元格都有一个内置的 UIImage 和一个点击手势识别器,可以在绿色复选标记和红色 x 之间来回切换图像。一切正常。

我现在想做的是编写一个条件语句,内容如下:当图像是绿色复选标记时,将单元格 textLabel 添加到 saved NSMutableArray; else 从数组中删除红色 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 (强,非原子) NSMutableArray *saved;

米:

- (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 或从中删除?

关于ios - 有条件地将单元格数据添加到 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21867027/

相关文章:

ios - 快速 watch 连接意外退出

iphone - 如何将 Core Data 集成到我现有的应用程序中?

iphone - 无法使用 SDWebImage 显示图像

objective-c - 如何在 UILabel 中使用多个不同的 UIFont?

python - 在 Python 中导入 XML 字典

ios - 禁用多点触控不工作 ios

ios - 从子节点 firebase 实时数据库 swift 4 中检索最后一个子节点

ios - UIPageControl + UI外观

ios - 表达式类型(imageNamed : String) is ambiguous without more context

ios - 触摸延迟开始 Cocos2d iOS