gpt4 book ai didi

ios - 如何获取对/更新一个自定义 UITableview 标题 View 的引用?

转载 作者:行者123 更新时间:2023-11-30 13:42:32 30 4
gpt4 key购买 nike

我有使用 UITableViewCell Nib 制作的自定义标题 View 。每个自定义标题都有按钮和图片,需要根据用户可以使用标题中的按钮执行的不同操作进行更新。

我很难引用 headerView 来更新其 UI。

我显然不能使用tableView.cellForRowAtIndexPath,因为它是标题而不是 TableView 单元格。我无法使用 tableview.headerViewForSection 因为它是用 UITableViewCell 而不是 UITableViewHeaderFooterView 制作的。

我也尝试过使用

tableView.reloadSections(indexSet, withRowAnimation: UITableViewRowAnimation.None)

但是,即使设置为 UITableViewRowAnimation.None,这也会产生不必要的卡顿/故障 UI 重新加载动画。故障似乎是标题消失然后从顶部重新出现,并且页脚 View 也从顶部向下滑动。

也尝试过

tableView.beginUpdates()
tableView.endUpdates()

这也有同样的故障效果。

let header = tableView.headerViewForSection(button.tag)
//codes to update headerview here
header?.setNeedsDisplay()
header?.setNeedsLayout()

这没有任何影响。

任何帮助将不胜感激!

我的代码如下所示:

注册 Nib :

let stickyHeaderNib = UINib(nibName: "Moment_StickyHeaderCell", bundle: nil)
tableView.registerNib(stickyHeaderNib, forCellReuseIdentifier: "moment_stickyHeaderCell")

然后:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let momentHeader = tableView.dequeueReusableCellWithIdentifier("moment_stickyHeaderCell") as! Moment_StickyHeaderCell

//various buttons and objects here

momentHeader.followButton.addTarget(self, action: "followButtonPressed:", forControlEvents: UIControlEvents.TouchDragInside)

return momentHeader}

然后是按钮选择器:

 func followButtonPressed (button: UIButton) {
let moment = moments[button.tag]


let point = tableView.convertPoint(CGPointZero, fromView: button)

if let indexPath = tableView.indexPathForRowAtPoint(point) {
}

//here's where I can't get reference to the headerView as mentioned above using .cellForRowAtIndexPath, .headerViewForSection

}

最佳答案

我找到这篇文章的答案[ https://stackoverflow.com/a/3611661/4905076]女巫说,召唤:

self.tableView.beginUpdates()
self.tableView.endUpdates()

// forces the tableView to ask its delegate/datasource the following:
// numberOfSectionsInTableView:
// tableView:titleForHeaderInSection:
// tableView:titleForFooterInSection:
// tableView:viewForHeaderInSection:
// tableView:viewForFooterInSection:
// tableView:heightForHeaderInSection:
// tableView:heightForFooterInSection:
// tableView:numberOfRowsInSection:

因此,您应该在 followButtonPressed 上手动更新您的部分并调用开始/结束更新。

关于ios - 如何获取对/更新一个自定义 UITableview 标题 View 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35388755/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com