我遇到了位於我的UITableViewCell一側的按鈕問題。我正在使用故事板並通過IB連接我的按鈕。在我的cellForRowAtIndexPath我添加了一個行動,我的按鈕:表格視圖中的UIButton單元格問題
cell.likeBtnPressed.tag = indexPath.row;
[cell.likeBtnPressed addTarget:self action:@selector(userDidTapOnLikeButton:photo:) forControlEvents:UIControlEventTouchUpInside];
下面你將看到當按下按鈕所謂:
-(void)userDidTapOnLikeButton:(UIButton *)button photo:(PFObject *)photo{
//Disable the button so users cannot send duplicat requests
[button setEnabled:NO];
[button setTintColor:[UIColor redColor]];
//Set the new state of the button
BOOL liked = !button.selected;
[button setEnabled:liked];
//Get the current number of likes the post have
NSString *originalButtonTitle = button.titleLabel.text;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
//Update the like count in the ECDCache
NSNumber *likeCount = [numberFormatter numberFromString:button.titleLabel.text];
if (liked) {
likeCount = [NSNumber numberWithInt:[likeCount intValue] + 1];
[[ECDCache sharedCache] incrementLikerCountForPhoto:photo];
}else{
if ([likeCount intValue] > 0) {
likeCount = [NSNumber numberWithInt:[likeCount intValue] - 1];
}
[[ECDCache sharedCache] decrementLikerCountForPhoto:photo];
}
//Add the current user as a liker of the photo in ECDCache
[[ECDCache sharedCache] setPhotoIsLikedByCurrentUser:photo liked:liked];
//Update the button label
[button setTitle:[numberFormatter stringFromNumber:likeCount] forState:UIControlStateNormal];
//Call the appropriate static method to handle creating/deleting the right object
if (liked) {
[ECDUtility likePhotoInBackground:photo block:^(BOOL succeeded, NSError *error) {
[button setEnabled:YES];
[button setTitleEdgeInsets:UIEdgeInsetsMake(-1.0f, 0.0f, 0.0f, 0.0f)];
[[button titleLabel] setShadowOffset:CGSizeMake(0.0f, -1.0f)];
if (!succeeded) {
// Revert the button title (the number) if the call fails
[button setTitle:originalButtonTitle forState:UIControlStateNormal];
}
}];
}
}
當過我按下按鈕,我收到這樣的:
-[UITouchesEvent objectId]: unrecognized selector sent to instance 0x15ee5de0
我不知道我做錯了什麼
好吧,我會嘗試一下。有沒有辦法讓我檢索我的userDidtap ..方法中按鈕的索引路徑? –
你可以通過'button'來查看它的'superview'(也許是superview的superview)來獲取包含它的'UITableViewCell'。那麼你只需要' - [UITableView indexPathForCell:]'。 –
理論上,您可以使用'@selector(a:b:)'選項中的'UIEvent'參數和' - [UITableView indexPathForRowAtPoint:]'來獲取索引路徑。 '[tableView indexPathForRowAtPoint:[event.allTouches.anyObject locationInView:tableView]]' –