gpt4 book ai didi

objective-c - UITableView 委托(delegate)方法被调用了两次

转载 作者:太空狗 更新时间:2023-10-30 03:19:09 25 4
gpt4 key购买 nike

今天我的问题是关于 UITableViewController-s特别是我注意到数据源委托(delegate)方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

被调用了两次(即使例如我只是创建一个基于导航的应用程序并且没有添加一行代码......很好地添加了一个 NSLog 来跟踪它)。现在,由于在我的应用程序中我需要根据文件系统中的文档来确定部分的数量,因此我需要调用一些方法来实现。我把这些方法放在了上面提到的方法中,所以它们会被调用两次,这是我不需要的。问题是为什么要调用两次,我可以调用一次吗?我希望在官方文档中没有明确说明这一点(这意味着我根本没有阅读它:))。顺便说一句,我可以看到其他人发布了类似的问题,但我找不到完全令人满意的答案。谢谢。

最佳答案

我遇到了同样的问题,只是调用了 numberOfRowsInSection:我收到的每个电话的答案都放在堆栈跟踪中。

  1. 第一次调用是由于我在 View Controller 的 viewDidLoad: 中创建的表头 View 发生了变化。

    thumbView.tableHeaderView = nil;
    thumbView.tableFooterView = nil;

    这导致了对 _updateContentSize: 的内部调用,后者调用了 heightForTable:,最终调用了 numberOfRowsInSection:。这是我触发的,可以通过不执行上述代码轻松避免:)

  2. 第二次调用是合法的,目的是重新加载数据。这是由某处的布局事件触发的,您很可能无法跳过它。

我相信您可以观察到与 numberOfSections: 方法类似的东西

因此,我的结论是,由于 UITableView 的实现,在许多情况下某些委托(delegate)方法将被调用两次或更多次,因为 TableView 必须刷新某些内容。我尝试围绕这个错误/功能/等设计我的代码。

希望对你有帮助

关于objective-c - UITableView 委托(delegate)方法被调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638359/

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