【问题标题】:Capture cell being pressed without didSelectRowAtIndexPath在没有 didSelectRowAtIndexPath 的情况下捕获被按下的单元格
【发布时间】:2013-12-12 13:12:39
【问题描述】:

我有以下UITableViewCell(嗯,子类)。

使用didSelectRowAtIndexPath 可以捕获已在UITableViewController 中选择的单元格。我的问题是因为直接按Choose User 会绕过单元格的选择。

即使用户立即点击Choose User,我怎么能让我的UITableViewController 知道UITableViewCell foo 已被按下?

注意我需要选择功能本身,这只是通过知道用户在单元格区域内点击的方法。

【问题讨论】:

    标签: ios iphone objective-c uitableview


    【解决方案1】:

    您可以直接调用该方法。如果我们说对于每个Choose User 按钮,我们将行号设置为tag,并假设您没有部分,那么一切都会发生在0 部分,我们可以这样做。

    - (void)hitChooseUser:(id)sender
    {
        // Do whatever you want for when a user hits the `Choose User` button
        // Code......
    
        // Then do this at the end or whenever you want to do it.
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[sender tag] inSection:0];
        // Also assuming you have created you have created you UITableView correctly.
        [self tableView:myTableView didSelectRowAtIndexPath:indexPath];
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Do whatever it is you want.
    }
    

    我还发现了这个链接,可以帮助你Manually call didSelectRowatIndexPath

    您还可以通过将cellForRowAtIndexPath: 中的每个单元格的userInteractionEnabled: 设置为NO 来禁用用户与单元格本身的交互,这样didSelectRowAtIndexPath: 只会在您想要手动调用它时被调用。

    【讨论】:

      【解决方案2】:

      不要调用didSelectRowAtIndexPath: 这是一个UITableViewDelegate 方法,并且在可能的情况下应该这样使用(意思是让UITableView 向它发送消息)。此外,它还对UITableView 实现产生了不必要的依赖。

      话虽如此,为了实现在按钮单击或行选择时执行的共享行为,请将其重构为不与 UITableViewDelegate 耦合的通用方法

      例如:

      -(void)doSomethingCommon {
          //do shared code here
      }
      
      -(void)chooseUserButtonPressed:(id)sender {
          [self doSomethingCommon];
      }
      
      - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
          [self doSomethingCommon];
      }
      

      如果您的UITableView 显示多个这些行,您依赖于知道哪个相应的模型对象与单元格相关,那么您可以使用UIView 子类上的tag 属性(通常是在您的单元格中)以标记显示对象的行。

      【讨论】:

        猜你喜欢
        • 2012-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        • 2014-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多