gpt4 book ai didi

iphone - uitableview headerViewForSection : always returns nil

转载 作者:技术小花猫 更新时间:2023-10-29 10:07:27 28 4
gpt4 key购买 nike

我有一个带有自定义标题 View 的表格,无论何时,或者我为部分选择什么值,我总是得到零值。我有另一个表有同样的问题。

如果我打印 [tableview subviews] 的值,我可以看到标题 View ,但我不知道为什么该方法不返回任何内容。

我想做的是获取 headerview 中的 activityIndi​​cator 并通过方法调用启动或停止它。

header 始终绘制正常,但我无法获得对它的引用。还有,调用headerViewForSection:并没有调用delegate方法,这正常吗?

footerViewForSection:有同样的问题

部分代码:

- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

NSArray* objs = [[NSBundle mainBundle] loadNibNamed:@"iPadTableCells" owner:nil options:nil];
UIView* header = [objs objectAtIndex: 0];

UIActivityIndicatorView* activityIndicator = (UIActivityIndicatorView*) [header viewWithTag:5];
[activityIndicator startAnimating]

return header;

}

从任何方法:

    UIView* headerView = [tableview headerViewForSection: section];  //returns nil

if (headerView) {
UIActivityIndicatorView* activityIndicator = (UIActivityIndicatorView*)[headerView viewWithTag: 5];
[activityIndicator stopAnimating];
}

最佳答案

回答

来自文档:

To make the table view aware of your header or footer view, you need to register it. You do this using the registerNib:forHeaderFooterViewReuseIdentifier: or registerClass:forHeaderFooterViewReuseIdentifier: method of UITableView.

(Swift 等价物是 register(_:forHeaderFooterViewReuseIdentifier:)。)

因此您需要注册 nib,然后使用重用标识符获取它,而不是直接将其从应用程序包中拉出,这正是您现在正在做的。

...如果您想使用 headerViewForSection 方法。

备选答案

或者,您可以检查是否在 viewForHeaderInSection 方法中继续旋转,然后发送调用:

[self.tableView beginUpdates];
[self.tableView endUpdates];

刷新节标题。

(请注意,这种替代方法会破坏并重新创建您的整个 View ,因此如果您有一个包含大量数据的大表,它可能不是很有效。)

关于iphone - uitableview headerViewForSection : always returns nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15231726/

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