从用作 tableHeaderView 的 xib 文件中的按钮转到 VC

Posted

技术标签:

【中文标题】从用作 tableHeaderView 的 xib 文件中的按钮转到 VC【英文标题】:go to VC from button inside xib file that is used as a tableHeaderView 【发布时间】:2016-07-11 13:24:07 【问题描述】:

我有一个 TableSectionHeader xib 文件,里面有一个 button (以及其他一些东西)。这个 xib 文件在我的PostViewController 中用作UItableviewcustom header

我希望能够单击该按钮以显示有关单元格的详细信息。但是,由于按钮位于 xib 文件内,IBAction 位于 TableSectionHeader.Swift 内(继承自 UITableViewHeaderFooterView)。这意味着我不能segue or instantiate一个VC。

如何从xib 文件中的这个按钮转到另一个 VC?

【问题讨论】:

【参考方案1】:

您需要将按钮的出口放入您的 xib 类而不是操作,并且当您在视图控制器中创建并返回标题时,您将在返回标题之前获得按钮的引用,然后 @987654321 @ 到您的按钮,并使用选择器标记将处理转到下一个视图控制器的方法。

在您的 xib 类中拖动并连接按钮:

class YearSectionHeader : UITableViewHeaderFooterView 

@IBOutlet car button :UIButton!


在您的视图控制器表视图标题方法(示例)中,不要忘记将类和标识符更改为您使用的正确方法:

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

        let header : YearSectionHeader = tableView.dequeueReusableHeaderFooterViewWithIdentifier("TableHeader") as! YearSectionHeader
        header.button.addTarget(self, action: #selector(self.handlingMethodName(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        header.button.tag = section
        return header

    

sender.tag 是你的节号,你可以在这里进行转场:

func handlingMethodName(sender:UIButton)

        print(sender.tag)

    

【讨论】:

以上是关于从用作 tableHeaderView 的 xib 文件中的按钮转到 VC的主要内容,如果未能解决你的问题,请参考以下文章

在xib里,拖一个UIView到UITableView中作为tableHeaderView:

iOS UITableView tableHeaderView 高度变了

tableView.tableHeaderView赋值后立即刷新

tableView.tableHeaderView 已设置但未绘制

UITableView tableHeaderView中的UIButton没有响应触摸

如何在UICollectionView中添加HeaderView,如UITableView的tableHeaderView