【发布时间】:2009-12-30 21:38:04
【问题描述】:
我想创建一个包含 495 个单元格的表格视图。
我想用 NSArray 导入单元格,对吗?
如果是的话,如何用简单的代码创建495个单元格?
不是这样的:
@"Cell 1" @ "cell 2" @"cell 3", @"cell 4", @"cell 5" ............. @"cell 495"
【问题讨论】:
标签: ios uitableview
我想创建一个包含 495 个单元格的表格视图。
我想用 NSArray 导入单元格,对吗?
如果是的话,如何用简单的代码创建495个单元格?
不是这样的:
@"Cell 1" @ "cell 2" @"cell 3", @"cell 4", @"cell 5" ............. @"cell 495"
【问题讨论】:
标签: ios uitableview
您必须在 '-tableView:numberOfRowsInSection:' 方法中返回 495 的值,例如
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Returning num rows");
return 495;
}
然后用你的数组填充表格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
cell.text = [array objectAtIndex:row];
return cell;
}
这里我假设您将文本数据存储在单元格中。 还要在 viewDidLoad 方法中创建数组。
【讨论】:
使用表格要记住的一点是,数据与界面中显示的实际单元格完全分开。数据列表可以任意长,但表格视图将仅显示填充物理屏幕所需的实际单元格。这就是-tableView:cellForRowAtIndexPath: 的用途。该表跟踪哪些行对用户实际可见,然后仅针对显示的行向数据源询问数据。
您可以使用 NSArray 来保存数据,而填充数组的最简单方法是从文件中读取它。您可以使用 /Developer/Applications/Utilities/Property List Editor.app(标准开发人员工具的一部分)创建一个 plist 文件,NSArray 可以通过initWithContentsOfFile: 直接读取该文件。 (如果你只是想创建一长串数据进行试验,你可以使用 NSMutableArray 并用循环填充它。)
在您的情况下,您有 495 个条目,但表格一次只能显示大约 9 个单元格(只是简单的默认文本单元格)。开始时它将显示索引为 0-8 的表。该表将调用-tableView:cellForRowAtIndexPath: 9 次,通过一个索引,即每次 0,1,2...7,8。然后,您的方法将在该索引处找到数组中的对象,例如[myArray objectAtIndex:index]。当用户滚动时,索引传递了更改。当显示第 300-308 行时,传递的索引为 300,301,...307,308。
【讨论】:
不,这不是正确的方法。请参阅UITableViewDataSource 的文档。具体来说,您需要实现 -tableView:numberOfRowsInSection: 和 -tableView:cellForRowAtIndexPath:。
【讨论】: