如何手动调用UITableView的titleForHeaderInSection方法?

发布于 2024-11-17 12:10:16 字数 405 浏览 4 评论 0原文

非常简单的问题,但我就是无法让它正常工作。当单击该部分中的单元格时,我需要能够访问该部分的字符串标题值。

我最初的尝试没有奏效:

[tableView titleForHeaderInSection:1];

我认为这会起作用的原因是因为我也在使用这个:

[tableView cellForRowAtIndexPath:indexPath];

效果很好。我正在实现委托,但仍然收到 UITableView 可能不会响应 titleForHeaderInSection 的警告。然后由于无法识别的选择器而崩溃。

我需要做的就是将单元格标题的字符串值和部分标题传递到下一个视图中。

我做错了什么?有更好的方法吗?谢谢

Pretty simple question, but I just can't get it to work right. I need to be able to access the string header value of a section when a cell within that section is clicked.

My initial attempts haven't been working:

[tableView titleForHeaderInSection:1];

The reason I thought that would work is because I am also using this:

[tableView cellForRowAtIndexPath:indexPath];

Which works fine. I'm implementing the delegate, but I still get the warning that UITableView may not respond to titleForHeaderInSection. And then it crashes because of an unrecognized selector.

All I need to do is pass the string value of the cell title, and the section title into the next view.

What am I doing wrong? Is there a better approach? Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

纵性 2024-11-24 12:10:16

您可以从 UITableViewControllerUITableView 访问 titleForHeaderInSection:您只需遵循对象链即可。

从视图控制器开始的示例:

class TableViewController: UITableViewController {

    func titleForHeaderInSection(indexPath:NSIndexPath) -> String? {
        if let tableView = self.tableView {
            if let dataSource = tableView.dataSource {
                if dataSource.respondsToSelector("tableView:titleForHeaderInSection:") {
                    return dataSource.tableView!(tableView,
                                                 titleForHeaderInSection:indexPath.row)
                }
            }
        }
        return nil
    }
}

You can access titleForHeaderInSection from UITableViewController and UITableView: you just need to follow the objects chain.

Example starting at the view controller:

class TableViewController: UITableViewController {

    func titleForHeaderInSection(indexPath:NSIndexPath) -> String? {
        if let tableView = self.tableView {
            if let dataSource = tableView.dataSource {
                if dataSource.respondsToSelector("tableView:titleForHeaderInSection:") {
                    return dataSource.tableView!(tableView,
                                                 titleForHeaderInSection:indexPath.row)
                }
            }
        }
        return nil
    }
}
-小熊_ 2024-11-24 12:10:16

titleForHeaderInSectionUITableViewDataSource 协议的方法,由客户端类而不是 UITabelView 实现。

因此,您无法在 UITableView 实例上调用 titleForHeaderInSection

titleForHeaderInSection is the method of UITableViewDataSource protocol which is implemented by the client class not UITabelView.

So you can't call titleForHeaderInSection on your UITableView instance.

红玫瑰 2024-11-24 12:10:16

怎么样:

[tableView titleForHeaderInSection:indexPath.section];

how about:

[tableView titleForHeaderInSection:indexPath.section];

拔了角的鹿 2024-11-24 12:10:16

手动调用 titleForHeaderInSection 对我来说不起作用。

但一个简单的 [tableView reloadData] 就达到了目的。

希望这有帮助

Calling manually titleForHeaderInSection did not work for me.

But a simple [tableView reloadData] did the trick.

Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文