I'm working on an app that behaves like a photo gallery, and I'm implementing the option to have the user delete photos from their gallery. To accomplish this, I decided to place an invisible button over each picture. When the user hits an "Edit" button, the hidden delete buttons over each picture become active. I'm using the same IBOutlet over each of the hidden buttons for simplicity, and I've tagged each button appropriately in Interface Builder. When the user taps the button over the picture, an alert view appears asking if they really want to delete it. If they click yes, I call removeObjectAtIndex
. Here is the code I'm using:
- (IBAction)deleteButtonPressed:(id)sender {
UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete"
message:@"Are you sure you want to delete this photo?"
delegate:self
cancelButtonTitle:@"Yes"
otherButtonTitles:@"No", nil];
[deleteAlertView show];
int imageIndex = sender.tag;
deleteAlertView.tag = imageIndex;
}
- (void)deleteAlertView:(UIAlertView *)deleteButtonPressed
didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex != [deleteButtonPressed cancelButtonIndex]) {
[array removeObjectAtIndex:deleteButtonPressed.tag];
}
[self.user setObject:array forKey:@"images"];
}
The error that I'm getting is highlighting int imageIndex = sender.tag;
, and states "Property tag
not found for object of type __strong id
". I've been doing research regarding this error, and am not finding any helpful information. I'm still new to programming, so I'm not sure how to fix this at all. Any help is much appreciated, thank you!
You need to cast sender to appropriate type. For instance int imageIndex = ((UIView*)sender).tag;
.
delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Delete", nil
. The actual logic error is that your “Yes” button is labeled as the cancel button, and your delegate method is checking that the button pressed was not the cancel button. You can leave the delegate method as-is, though: just swap the order of your button texts when you’re setting up the alert view, and, ideally, name them more clearly - Noah Witherspoon 2012-04-03 23:05
NSLog(@"Sender is %@", sender);
in my deleteButtonPressed method, and it said that the sender is UIButton. So, I addedint imageIndex = ((UIButton *)sender).tag;
. The error went away, but when I click Yes in the alert view, nothing happens. Should I create another question for this - Henry F 2012-04-03 22:35