仅显示UITableView中的前10个单元格

时间:2012-09-17 23:31:25

标签: objective-c ios uitableview

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

是否有可能隐藏其余的单元格或者不首先显示它们(例如,通过不在cellForRowAtIndexPath中添加它们),我试图在cellForRowAtIndexPath中有一个计数器,每次cellForRowAtIndexPath方法是+ 1调用。我对计数器进行了NSLog,它非常大,直到80,我在UITableView中甚至没有30个单元格。

谢谢!

修改 问题是,每次滚动UITableView时,每次滚动经过indexPath(对于同一个indexPath)都会调用cellForRowAtIndexPath,因此计数器无效。

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

2 个答案:

答案 0 :(得分: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的倍数的原因。只需删除{{1}当你声明NSInteger并且你应该全部设置时。

答案 1 :(得分:1)

这是您要实施的两种方法。这样您就可以限制tableview中的节和行数,而无需操作xml数据。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section