我的iPhone应用程序上有一个自定义的UITableViewCell,对此我有一个自定义的setSelected:animated方法。我的应用程序可以在iPhone上完美运行,但是,我开始将应用程序移植到iPad。我已经复制了完全相同的 Storyboard ,没有进行任何更改,但是现在当我选择单元格时,我的setSelected:animated方法被调用了两次(具有相同的参数)。我可以通过检查iPad等是否“处理”这种情况,但这是一个不好的做法。它在iPhone上被调用一次但在iPad上被调用两次的原因可能是什么? (均为iOS 7.0.3)表格 View 的属性完全相同(我已经复制了iPhone Storyboard文件)。

以下是相关代码:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    isSelected = selected;
    [self setNeedsDisplay];
    if(selected){
        SocialMatchAppDelegate *del = (SocialMatchAppDelegate*)[UIApplication sharedApplication].delegate;
        del.selectedUser = self.user;
        [del.resultViewController performSegueWithIdentifier:@"viewProfile" sender:self];
    }
}

最佳答案

我想如果您使用iPad,这是正常现象。

为了停止获取多个“setSelected:YES”或多个“setSelected:NO”,您要做的就是:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

现在,在任何单元格上单击1即可为您提供:
  • setSelected的1个条目:是动画的:否
  • tableView的1个条目:didSelectRowAtIndexPath:
  • setSelected的1个条目:无动画:是
  • 关于ios - UITableViewCell setSelected :animated called twice on iPad,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20995357/

    10-10 21:54