gpt4 book ai didi

ios - 为什么 titleForHeaderInSection 方法被多次调用?

转载 作者:行者123 更新时间:2023-11-29 02:24:44 25 4
gpt4 key购买 nike

我有一个简单的项目,它有一个 View ,这个 View 里面只包含一个 TableView 。表格 View 被分组并且有一个简单的原型(prototype)单元格。

我已经实现了 titleForHeaderInSection 方法来自定义部分标题。当我查看调试输出时,我看到该应用程序多次在 titleForHeaderInSection 中打印日志语句。有时两次,有时三次。有谁知道为什么?

这是我的代码:

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *initialTitle = @"A title";
NSLog(@"titleForHeaderInSection: %@", initialTitle);
return initialTitle;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UILabel *myLabel = [UILabel new];
myLabel.frame = CGRectMake(20, 20, 320, 20);
myLabel.font = [UIFont boldSystemFontOfSize:20];
myLabel.text = @"Test";
UIView *headerView = [UIView new];
[headerView addSubview:myLabel];
return headerView;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TestCell" forIndexPath:indexPath];
return cell;
}

@end

这是调试输出:

2014-12-29 14:57:30.806 TestTitleForHeaderInSection[5212:118874] titleForHeaderInSection: A title
2014-12-29 14:57:30.812 TestTitleForHeaderInSection[5212:118874] titleForHeaderInSection: A title
2014-12-29 14:57:30.812 TestTitleForHeaderInSection[5212:118874] titleForHeaderInSection: A title

我还注意到 numberOfRowsInSection 方法被多次调用。

最佳答案

UITableView 的委托(delegate)方法可以在应用程序执行期间随时调用,没有人应该完全依赖于它们被调用的次数。许多外部事件会迫使 UITableView 重新加载其数据,因此在依赖此函数调用时必须非常小心。

关于ios - 为什么 titleForHeaderInSection 方法被多次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27689379/

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