[英]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.