UITableViewCell setSelected:animated 在 iPad 上调用了两次
Posted
技术标签:
【中文标题】UITableViewCell setSelected:animated 在 iPad 上调用了两次【英文标题】:UITableViewCell setSelected:animated called twice on iPad 【发布时间】:2014-01-08 12:13:58 【问题描述】:我的 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];
【问题讨论】:
你能发布你的代码进行分析吗? 我添加了setSelected:animated
代码
@canpoyrazoğlu 该代码没有任何问题,因此我认为这与情节提要有关。
我已经从 iPhone 复制了确切的故事板。按文件复制粘贴。它(表格视图或表格视图单元格)在 iPhone 和 iPad 上的行为不同,即使使用完全相同的 iOS 版本(我使用的是模拟器)
我有完全相同的问题,在 swift 中完成了类似的代码。我还有一个通用版本的故事板,所以 iPhone 和 iPad 的故事板都相同,我还发现 setSelected 在 iPad 上被调用了两次 - 如果我将模拟器更改为 iPhone(任何一个).. 问题不存在.. 避免双重选择集的最佳方法是什么?
【参考方案1】:
如果您使用的是 iPad,我想这是正常现象。
为了停止获取多个“setSelected:YES”或多个“setSelected:NO”,您所要做的就是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[tableView deselectRowAtIndexPath:indexPath animated:YES];
现在,单击任何单元格即可:
setSelected 的 1 个条目:YES 动画:NO tableView 的 1 个条目:didSelectRowAtIndexPath: setSelected 的 1 个条目:NO 动画:YES【讨论】:
为什么这是正常现象?【参考方案2】:- (void)setSelected:(BOOL)selected
在您的来源中调用了哪里?
如果在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
改用这个
[tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
【讨论】:
我没有调用它。我只是通过触摸它来选择它:)以上是关于UITableViewCell setSelected:animated 在 iPad 上调用了两次的主要内容,如果未能解决你的问题,请参考以下文章
如何让 UITableViewCell 在自定义 UIView 子类上调用 setHighlighted 或 setSelected?
UITableViewCell setSelected:animated 在 iPad 上调用了两次
iPhone - 是不是可以覆盖 UITableViewCell setSelected:animated
在 UITableViewCell 的 setSelected 和 setHighlighted 方法中创建自定义附件视图会导致我的其余代码被忽略