我的iPhone应用程序上有自定义UITableViewCell
我有自定义setSelected:animated
方法。我的应用程序在iPhone上完美运行,然而,我开始将我的应用程序移植到iPad。我已经复制了完全相同的故事板,没有改变任何东西,但是当我选择我的单元格时,现在我的setSelected:animated
方法被调用两次(具有相同的参数)。我可以通过检查iPad等来“处理”这种情况,但这将是一个不好的做法。可能是因为它在iPhone上被称为一次,而在iPad上被称为两次? (iOS 7.0.3)表视图的属性完全相同(我复制了iPhone故事板文件)。
以下是相关代码:
- (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];
}
}
答案 0 :(得分:4)
如果您使用iPad,我认为这是正常行为。
为了停止获得多个“setSelected:YES”或多个“setSelected:NO”,您只需要这样做:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
现在,点击任意一个单元格即可:
答案 1 :(得分:0)
- (void)setSelected:(BOOL)selected
在您的来源中调用了哪里?
如果它在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
改为使用
[tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];