gpt4 book ai didi

ios - 未调用 cellForRowAtIndexPath - 使用标记来识别 TableView

转载 作者:行者123 更新时间:2023-11-29 02:47:06 26 4
gpt4 key购买 nike

我见过很多人问过类似的问题,但他们问题的答案并不是我的答案。

1) 我创建了一个带有空 View Controller 的单 View 应用程序。在那里,我拖动了一个新的 TableView (样式为 Plain),其中包含一个样式为 Basic 的原型(prototype)单元格。

2) 我正在尝试了解如何动态更改 TableView 的行为,因此我有一个名为 sectionRows 的可变数组,它将包含每个部分的行数。目前,具有多行的单个部分将是一项成就:)

3) 在我的 ViewController.h 中我设置了委托(delegate)

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@end

我还通过控制从 TableView 拖动到 ViewController Yellow-Circle 并设置了数据源和委托(delegate) socket 。

4) 在我的 ViewController.m 中,我定义了一些全局变量

@interface ViewController ()
{
NSMutableArray *sectionRows;
UITableView *myTableView;
}

第一个是我的数据数组(包含每个部分的行数,第二个是指向我的 TableView 的指针,我使用数字 View 标记“1”标识了它。

5)在我的 viewDidLoad 中,我初始化了所有内容:

- (void)viewDidLoad
{
[super viewDidLoad];

myTableView = (UITableView *)[self.view viewWithTag:1];

sectionRows = [[NSMutableArray alloc] init]; // Create sectionarray

[sectionRows addObject:[NSNumber numberWithInteger:1]];

myTableView.dataSource = self;
myTableView.delegate = self;

[myTableView reloadData];
}

如您所见,我什至确保再次设置数据源和委托(delegate),但这没有任何区别。

5) 我重载了 3 个方法。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Returning %@ rows", [sectionRows objectAtIndex:section]);
return (NSInteger)[sectionRows objectAtIndex:section]; // the number referenced in the array...
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
NSLog(@"Returning %li sections", sectionRows.count);
return sectionRows.count; // the size of the sectionRows array
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

// Configure the cell...
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

cell.textLabel.text = @"xxx";
NSLog(@"Setting cell to %@", cell);
return cell;
}

现在,当我运行此命令时,我收到 NSLog 返回确认信息,表明存在单个部分和单个行:

2014-07-27 19:58:34.599 TableViewTests[12877:60b] Returning 1 sections
2014-07-27 19:58:34.600 TableViewTests[12877:60b] Returning 1 rows

但是,正如您所看到的,cellForRowAtIndexPath 没有被调用。

我所看到的其他事情都没有表明我做错了什么。我正在做我认为我在另一个简单项目中成功完成的事情(学习),但我必须做一些不同的事情。

知道我遗漏了什么吗?

提前致谢

乔恩

最佳答案

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Returning %@ rows", [sectionRows objectAtIndex:section]);
return (NSInteger)[sectionRows objectAtIndex:section]; // the number referenced in the array...
}

这是不正确的。您不能将从数组中获得的内容转换为 NSInteger。这是一个指针。假设您将 NSNumber 存储到数组中:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Returning %@ rows", [sectionRows objectAtIndex:section]);
return [[sectionRows objectAtIndex:section] integerValue]; // the number referenced in the array...
}

关于ios - 未调用 cellForRowAtIndexPath - 使用标记来识别 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984514/

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