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

2024-01-19

我有一个 UITableViewController,其表视图具有静态单元格,在故事板中定义。

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

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

我尝试过很多事情,但是viewForHeaderSection只被调用一次。

我注册了标题部分单元格

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

Where 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只被调用一次。

我是否能够按照上述方式动态刷新节标题文本?


实际上,您可以使用传统的表视图方式轻松实现这一点。

即使它是静态 UITableView,在您的 dataSource 视图控制器中,您仍然可以实现- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

那么如何动态更新标题呢?为该视图控制器创建一个属性,例如NSString *titleForSecondSection。每当用户点击第一部分中的单元格时,您只需在回调中更新此属性- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态更改静态单元格上的节标题文本 的相关文章

  • Xcode 6 仪器冻结

    在 Xcode 6 Instruments 中分析我的 iOS 8 应用程序将运行该应用程序约 5 秒 然后冻结 此后探查器仍将运行 但应用程序已冻结且无法使用 发生在设备和模拟器上 无论我使用哪个分析器 计时器 泄漏等 从调试器或临时构建
  • 创建自定义 MCBrowserViewController

    有没有办法创建一个UITableView包含在中找到的相同信息MCBrowserViewController 我当前的代码只允许推送与我的应用程序设计不同的标准视图 self browserVC MCBrowserViewControlle
  • 我如何在 viewDidLoad 中执行 UIView animateWithDuration ? IOS 7

    我在 viewDidAppear 中尝试这个 但我有一秒钟的延迟 我能做什么 在 viewDidLoad 中工作 void viewDidAppear BOOL animated fullRotation CABasicAnimation
  • 是否可以在 Swift 中交错 WebView 和 CALayerViews

    我有一个充当多个 CAShapeLayers 容器的视图 它们包含在屏幕上形成组合的贝塞尔曲线 用户可以通过不同的方式管理线宽 颜色 形状填充 不透明度等 我想通过占据相同容器的 WebView 引入文本 诀窍是 理想情况下我希望能够控制每
  • 什么是已弃用的推送转场? (iOS 8)[重复]

    这个问题在这里已经有答案了 我不知道在这种情况下已弃用意味着什么 我是编程新手 正在 Xcode 6 中制作我的前几个应用程序 今天我正在制作一个待办事项列表应用程序 当连接到用户可以输入新待办事项以添加到主表的场景时 我被邀请使用推送转场
  • iOS:加载时的设备方向

    似乎当我的应用程序加载时 它不知道其当前方向 UIInterfaceOrientation orientation UIDevice currentDevice orientation if orientation UIDeviceOrie
  • 在完成块中保留循环

    在我的课堂上 我创建了这个方法 void refreshDatasourceWithSuccess CreateDataSourceSuccessBlock successBlock failure CreateDataSourceFail
  • 在视图控制器中获取 applicationDidFinishLaunching 调用。解析尚未初始化

    我正在尝试从 Parse 加载数据Initial View 控制器 问题是 Parse 在我的中初始化AppDelegate s didFinishLaunching所以我需要等到它被调用后再尝试从 Parse 加载数据 在我的视图控制器中
  • 将 C 转换为 Swift:向 UITextField 添加放大镜图标

    如何在左侧添加一个放大镜图标UITextField 我找到了类似问题的答案here https stackoverflow com questions 11811705 where can i get the magnifying glas
  • iOS 自定义滑块删除两端的最小和最大空间

    我正在尝试使用自定义滑块 class MySlider UISlider override func trackRect forBounds bounds CGRect gt CGRect let customBounds CGRect o
  • TestFlight 提供反馈按钮

    我正在使用 iOS 8 的最新 testflight 版本 我将自己添加为内部测试人员 现在当我使用 testflight 打开应用程序时 我找不到反馈按钮 如果有人有任何线索 请告诉我 您在 Testflight 应用程序中提供反馈 打开
  • Flutter - 选择 TextFormField 时键盘不显示

    我目前遇到一个问题 当我选择任何一个时 键盘不会出现TextFormFielda 内的小部件Form小部件 这是表单的代码 位于我的内部CreateAccountForm有状态的小部件 import package flutter mate
  • 使用远程图像创建 MSSticker

    我正在尝试找出使用网络上托管的图像创建 MSStickers 的方法 我可以使用本地图像创建 MSStickers 例如 NSString imagePath NSBundle mainBundle pathForResource imag
  • 使用 Protobuf-net,我收到有关 List 未知线路类型的异常

    我已经开始将 Unity iOS 游戏转换为使用 Protobuf net 保存状态 看起来一切正常 直到我将此实例变量添加到GameState ProtoMember 10 public List
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • 如何在 Swift 中使用indexesOfObjectsPassingTest:

    IndexOfObjectsPassingTest 的声明在 Swift 中看起来像这样 func indexesOfObjectsPassingTest predicate AnyObject Int CMutablePointer
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • Swift 运行时库与 Swift 标准库

    In this 关于如何使用 CocoaPods 的教程 https www raywenderlich com 97014 use cocoapods with swift我无法理解以下段落 与 Objective C 不同 标准 Swi
  • 闭包存储属性初始化有什么好处?

    初始化类的属性时 此代码有什么区别以及优点 缺点 1 let menuBar MenuBar let mb MenuBar return mb and 2 let menuBar MenuBar 两个代码片段都声明并初始化存储的属性 htt

随机推荐