以编程方式“触摸”UITableViewCell?

Posted

技术标签:

【中文标题】以编程方式“触摸”UITableViewCell?【英文标题】:Programmatically 'Touch' UITableViewCell? 【发布时间】:2012-02-23 20:47:35 【问题描述】:

我需要以编程方式选择一个 UITableViewCell,我试过这个:

NSIndexPath *selectedCellIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        [table selectRowAtIndexPath:selectedCellIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone];

但是,它只会在视觉上选择单元格,并且不会在 didSelectRowAtIndexPath 中选择该单元格,除非您实际点击该单元格。

任何想法,有没有人经历过这个或有想法来解决这个问题或以不同的方式处理它?

【问题讨论】:

Select tableview row programmatically 的可能重复项 【参考方案1】:

在向 selectRowAtIndexPath 发送消息后,为什么不向 didSelectRowAtIndexPath 发送消息?代码应如下所示:

NSIndexPath *selectedCellIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[table selectRowAtIndexPath:selectedCellIndexPath 
                   animated:YES 
             scrollPosition:UITableViewScrollPositionNone];
[table.delegate tableView:table didSelectRowAtIndexPath:selectedCellIndexPath];

【讨论】:

你已经知道要选择的索引路径,所以试试这个:[table.delegate tableView:table didSelectRowAtIndexPath:selectedCellIndexPath];【参考方案2】:

如果想要按下它,我猜你只是想在 didSelectRow 中运行代码?

无论你的 didSelectRow 方法中有什么,你不能把它放在一个单独的方法中然后调用它吗?

【讨论】:

【参考方案3】:

如果您将 UITableView 子类化,则可以自定义在每个 TableViewCells 上发生的 UIEvent。 您的控制器将响应触摸事件:

touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

对于每个事件,你都有一个 NSSET 的触摸,你可以找到你的 UitableViewCell 例子:

 - touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    for(UITouch *aTouch in touches)
        if(aTouch.view IsYourUiTableViewCell)
           NSLOG(@"TableViewCell press!");
        
    
  

【讨论】:

以上是关于以编程方式“触摸”UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 UIImageViews 添加到 UITableViewCell

UITableViewCell 类布局无法以编程方式工作

在 Swift 中以编程方式突出显示 UITableViewCell

如何以编程方式使 UICollectionView 填充 UITableViewCell?

以编程方式在 UITableViewCell 上显示删除按钮

使用 Swift 以编程方式自定义 UITableViewCell