gpt4 book ai didi

iOS UITableView 以编程方式显示节标题

转载 作者:行者123 更新时间:2023-11-29 12:48:36 27 4
gpt4 key购买 nike

我想以编程方式显示节标题。这是我的。

- (void)refreshSectionHeader
{
[self.tableView beginUpdates];
[self.tableView endUpdates];
}

-

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if ([self shouldShowSectionHeader]) {

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor whiteColor];
label.font = [label.font fontWithSize:15];
label.text = @"It'sa me! Mario!";
label.textAlignment = NSTextAlignmentCenter;

return label;

} else {
return nil;
}
}

-

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if ([self shouldShowSectionHeader]) {
return 20;

} else {
return 0;
}
}

它几乎可以工作。当我调用 refreshSectionHeader 时,标题显示正确但没有显示文本(标签)。只要我滚动 tableView,文本就会出现。显然,我希望文本立即出现。有什么解决办法吗?

此外,当 shouldShowSectionHeader 返回 NO 时,标题会正确消失。

最佳答案

好的,我找到了 3 种方法来解决这个问题。他们在这里。

您不必实现所有三个。这 3 个中只有一个就足够了。

我认为解决方案 1 是最好的。


1 - 在 viewForHeaderInSection 中,确保使用正确的框架初始化标签。另外,将它添加到 UIView。返回该 UIView 而不是 UILabel。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if ([self shouldShowSectionHeader]) {

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)];
label.backgroundColor = [UIColor whiteColor];
label.font = [label.font fontWithSize:15];
label.text = @"All your base are belong to us!";
label.textAlignment = NSTextAlignmentCenter;

UIView *sectionHeader = [[UIView alloc] init];
[sectionHeader addSubview:label];

return sectionHeader;

} else {
return nil;
}
}

2 - 使用

- (void)refreshSectionHeader
{
[self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}

代替

- (void)refreshSectionHeader
{
[self.tableView beginUpdates];
[self.tableView endUpdates];
}

3 - 像这样以编程方式滚动表格 View

- (void)refreshTableViewHeader
{
[self.tableView beginUpdates];

CGPoint contentOffset = self.tableView.contentOffset;
contentOffset.y++;
[self.tableView setContentOffset:contentOffset animated:NO];
contentOffset.y--;
[self.tableView setContentOffset:contentOffset animated:NO];

[self.tableView endUpdates];
}

关于iOS UITableView 以编程方式显示节标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023053/

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