为 UISlider 的 valueChanged 更新 UITableView titleForFooterInSection?

Posted

技术标签:

【中文标题】为 UISlider 的 valueChanged 更新 UITableView titleForFooterInSection?【英文标题】:Update UITableView titleForFooterInSection for UISlider's valueChanged? 【发布时间】:2010-01-19 15:48:31 【问题描述】:

我有一个 UITableViewCell,里面有一个 UISlider。我有一个表格视图的页脚文本,我想用 UISlider 的值进行更新。

但是,调用 [self.tableView reloadData];不适用于 UISlider,因为调用次数过多。我能够正确更新单元格(它也显示值),但我无法更新页脚文本。我试过了:

[self tableView:self.tableView titleForFooterInSection:0];

但它不起作用..

【问题讨论】:

【参考方案1】:

将滑块连接到控制器中的操作方法:

[theSlider addTarget:self 
              action:@selector(adjustSliderValue:) 
    forControlEvents:UIControlEventValueChanged];

实现滑块动作方法:

- (void) adjustSliderValue: (UISlider *) slider

    // Change controller's state here. 
    // The next line will trigger -tableView:titleForFooterInSection:
    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex: mySectionIndex] 
                  withRowAnimation:UITableViewRowAnimationNone];

这比重新加载整个表更有效。不幸的是,没有办法直接设置节页脚文本。

【讨论】:

那行不通。这与这篇文章中描述的问题相同:***.com/questions/1252781/… -- 我可以更新单元格的 textLabel,但更新 section 或 tableView 以更新页脚不起作用。 啊,我现在明白了。好的,看来您必须改为实现 -tableView:viewForFooterInSection: 。这样,视图完全在您的控制之下,您可以直接与其交互,而无需重新加载数据。为避免滚动时与内存相关的问题,请将其保留在控制器中。视图可以是任何 UIView 子类,包括 UILabel。 啊,你是对的。嘿,如果您可以将其写为答案,我会将其标记为正确答案,以便您获得积分或其他任何东西:) 我可以简单地使用 [self tableView:self.tableView titleForFooterInSection:kSECTION] 来更新页脚标题。我在 seg 控制器水龙头上调用它。工作。

以上是关于为 UISlider 的 valueChanged 更新 UITableView titleForFooterInSection?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 UILabel 显示 UISlider 值?

检测 UISlider 何时开始和结束拖动

UISlider 返回两个 Touch Up Inside 事件,为啥会这样?

Xcode:在 UISlider 中没有更多上下文错误的表达式类型不明确

IOS - 当滑块值改变时设置 UILabel Swift

form.valueChanges 不会为禁用的控件发出值