【问题标题】:UITableViewCell setSelected:animated called twice on iPadUITableViewCell setSelected:animated 在 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(任何一个).. 问题不存在.. 避免双重选择集的最佳方法是什么?

标签: ios cocoa-touch uitableview ios7


【解决方案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];

【讨论】:

  • 我没有调用它。我只是通过触摸它来选择它:)
猜你喜欢
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多