从自定义 Tableview 部分标题中获取 indexPath

Posted

技术标签:

【中文标题】从自定义 Tableview 部分标题中获取 indexPath【英文标题】:Get indexPath from custom Tableview section header 【发布时间】:2016-04-19 13:36:40 【问题描述】:

我创建了一个自定义视图并将其添加到 tableView 部分标题中。

 func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 

        if section == 2 

            if (headerView == nil) 
                headerView = CustomHeaderSection(frame: CGRectMake(0,0,self.view.bounds.width,38))
            
            headerView!.delegate = self

            if isExpandableCell 

                headerView!.arrowImage.transform = CGAffineTransformIdentity

            else 

                headerView!.arrowImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))

            
            return headerView

        

        return nil
    

我在 tableview 部分添加的自定义视图上有一个按钮。现在点击后如何获取 indexPath?

【问题讨论】:

只有 TableView 单元格有索引路径。但是可能有一种现实的方法来获取标题所属的节号。 【参考方案1】:

在 CustomHeader 类中声明一个节号变量,并在 viewForHeaderInSection() 内部实例化时为其赋值。

在同一个类中实现目标按钮动作。因此,点击获取 self.section 并将其传递给 ViewController。

void onButtonTap (id sender)
        
            UIButton button = (UIButton)sender;

        this.sectionHeaderViewDelegate.buttonTapped (this.section);

        

【讨论】:

【参考方案2】:

在您的功能上,您可以向按钮添加标签 id,使其与 indexPath 相同

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
let cell = tableView.dequeueReusableCellWithIdentifier("FoldingCell", forIndexPath: indexPath) as! myTableViewCell
...
cell.myButton.tag = indexPath.row
...

【讨论】:

【参考方案3】:

您可以将部分标题视图的tag 属性分配给tableView(tableView: UITableView, viewForHeaderInSection section: Int) 方法内的部分编号。

【讨论】:

但我只初始化了一次 headerView。因此,如果我分配一个标签,它将被修改,因此我将无法检查它。 那么您的表格视图中只有一个标题?

以上是关于从自定义 Tableview 部分标题中获取 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

无法从自定义表格视图单元格按钮中删除行

从自定义表格视图单元格获取数据到另一个 VC?

Segue 未从自定义 tableView 单元格触发

如何从自定义表格视图单元类中获取对表格视图控制器的引用

如何从自定义 UITableViewCell 调用操作以重新加载 tableView

从自定义控件的模板部分中删除事件处理程序