gpt4 book ai didi

ios - 动态更改静态单元格上的节标题文本

转载 作者:行者123 更新时间:2023-11-28 08:17:44 25 4
gpt4 key购买 nike

我有一个 UITableViewController,它的 TableView 具有静态单元格,在 Storyboard中定义。

我的 TableView 有两个部分。第一个有两个单元格,第二个部分有三个单元格。第二部分的标题中也有文本。

我想做的是,当用户点击第一部分中的第一个或第二个单元格时,更新第二部分的标题文本。动态地使用动态内容执行此操作(比如日期和时间在他们点击单元格的那一刻显示在那里)。

我已经尝试了很多东西,但是 viewForHeaderSection 只被调用了一次。

我注册了标题部分单元格

tableView.registerClass(TableSectionHeader.self, forHeaderFooterViewReuseIdentifier: "secondSectionCell")

其中 TableSectionHeader 很简单:

class TableSectionHeader: UITableViewHeaderFooterView { }

然后我可以动态设置节标题,如下所示:

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 1 {
if let cell = tableView.dequeueReusableHeaderFooterViewWithIdentifier("secondSectionCell") {
cell.textLabel?.text = "hello world"
return cell
}

}

return nil
}

我还实现了以下覆盖,因为有人建议在实现 viewForHeaderInSection 时,它也是必需的:

override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40.0
}

即使如此。 viewForHeaderInSection 只被调用一次。

我是否能够以某种方式动态刷新节标题文本,如上所述?

最佳答案

实际上,您可以使用传统的表格 View 方式轻松实现这一目标。

即使它是静态 UITableView,在您的数据源 View Controller 中,您仍然可以实现 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

那么如何即时更新标题呢?为此 View Controller 创建一个属性,比如 NSString *titleForSecondSection。每当用户点击第一部分中的单元格时,您只需要在回调 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 中更新此属性

最后一步是在修改 titleForSecondSection 属性后调用 [self.tableView reload]。或者,如果您不想重新加载整个 TableView ,只需调用 - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

需要明确的是,在你的 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 中,对于不需要更改标题的部分,只需返回一个静态的字符串。对于需要更改标题的部分,返回您创建的动态属性。

关于ios - 动态更改静态单元格上的节标题文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127531/

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