0

有没有办法只显示 UITableView 中的前 10 个单元格?我有一个从 XML 文件填充的 UITableView,我只想显示前 10 个单元格。问题是 UITableView 在这些部分中有多个部分和行。每个用户的行数和节数不同。

是否可以隐藏其余单元格或不首先显示它们(例如,通过不在 cellForRowAtIndexPath 中添加它们),我尝试在 cellForRowAtIndexPath 中有一个计数器,每次调用 cellForRowAtIndexPath 方法时 + 1。我 NSLog'ed 计数器,它变得非常大,直到 80,我什至在 UITableView 中没有 30 个单元格。

谢谢!

编辑: 问题是每次滚动 UITableView cellForRowAtIndexPath 时,每次滚动经过 indexPath(对于相同的 indexPath)时都会调用,因此计数器无效。

编辑2: 我认为它不起作用,所以我修改了我的XML文件以在文件中有一个计数器,现在我可以从xml文件中检查计数器是否大于10并检查它以修改cellForRowAtIndexPath中的单元格.

4

2 回答 2

5

您可以通过更改中的返回值来限制“加载”的行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

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

这个客场- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath只会被叫10次。

关于你的柜台:(你可能做错了)

你宣布它为NSInteger *somensint;

NSInteger 是一个原始的,而不是一个对象!你真正在做的是增加 NSInteger* 指向的内存地址。由于 NSInteger 的长度为 4 个字节,因此每次递增它时,编译器都会假定,由于它是一个指针,因此您希望跳转到内存中的下一个 NSInteger,这就是为什么您会得到 4 的倍数。只需在*声明时删除NSInteger,你应该已经准备好了。

于 2012-09-17T23:37:59.040 回答
1

这些是您要实现的 2 种方法。这将允许您限制 tableview 中的部分和行数,而无需操作您的 xml 数据。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
于 2012-09-17T23:38:22.753 回答