gpt4 book ai didi

ios - TableView 单元格中的 UIButton 问题

转载 作者:行者123 更新时间:2023-11-29 03:36:17 24 4
gpt4 key购买 nike

我的 UITableViewCell 中的按钮出现问题。我正在使用 Storyboard并通过 IB 连接我的按钮。在我的 cellforRowatIndexPath 中,我向按钮添加了一个操作:

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

我不知道我做错了什么

最佳答案

问题是您的方法接收的第二个参数不是PFObject,而是UIEvent

您可以将三种类型的选择器发送到 addTarget:action:forControlEvents::

  • @selector(a):此方法不带参数。
  • @selector(a:):该方法有一个参数,即接收控件事件的UIControl
  • @selector(a:b:):该方法有两个参数,接收控件事件的UIControl,和UIEvent 触发了它。

因为你只想得到按钮,你应该有这样的签名:

-(void)userDidTapOnLikeButton:(UIButton *)button
{
PFObject *photo = [self someLogicToGetThePhotoFromTheButton:button];
...

关于ios - TableView 单元格中的 UIButton 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19141747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com