今天遇到了很多麻烦。最后决定求助于专家。
我有一个标准的 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/