Iphone UITableView行数分段顺序问题
在表视图中插入数据时出现问题。我举了一个小例子来说明我的问题:Iphone UITableView行数分段顺序问题,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,在表视图中插入数据时出现问题。我举了一个小例子来说明我的问题: - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { switch (section) { case 0: NSLog(@"section: %d",section); if([listOfItems count]!=0){
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case 0:
NSLog(@"section: %d",section);
if([listOfItems count]!=0){
NSLog(@"size: %d",[listOfItems count] / 2);
return [listOfItems count] / 2;
}
else{
sectionCount++;
NSLog(@"size: %d", [[listOfComboBoxes objectAtIndex:0] count] - 1);
return [[listOfComboBoxes objectAtIndex:0] count] - 1;
}
break;
default:
NSLog(@"section: %d",section);
NSLog(@"size: %d", [[listOfComboBoxes objectAtIndex:sectionCount++] count] - 1);
sectionCount--;
return [[listOfComboBoxes objectAtIndex:sectionCount++] count] - 1;
break;
}
}
这是我在日志中收到的信息:
2011-06-09 11:14:40.753 TemplatesTest[1133:207] section: 3
2011-06-09 11:14:40.754 TemplatesTest[1133:207] size: 2
2011-06-09 11:14:40.754 TemplatesTest[1133:207] section: 0
2011-06-09 11:14:40.755 TemplatesTest[1133:207] size: 6
2011-06-09 11:14:40.755 TemplatesTest[1133:207] section: 1
2011-06-09 11:14:40.756 TemplatesTest[1133:207] size: 11
2011-06-09 11:14:40.756 TemplatesTest[1133:207] section: 2
2011-06-09 11:14:40.757 TemplatesTest[1133:207] size: 20
我想知道为什么从第3节开始?正确的输出应该是(如果是从第0节开始的):
有人知道修复方法吗?您可以在此处找到同样的问题,并提供额外信息 但根据我的假设,UITableView从下到上创建单元格,这就是为位于屏幕底部而不是UITableView末尾的行和节调用委托和数据源方法的原因 编辑: 可能您可以计算视图中每个部分加载前的行数,然后在此方法中传递值
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
你可以在这里找到同样的问题和额外的信息 但根据我的假设,UITableView从下到上创建单元格,这就是为位于屏幕底部而不是UITableView末尾的行和节调用委托和数据源方法的原因 编辑: 可能您可以计算视图中每个部分加载前的行数,然后在此方法中传递值
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
为什么您关心调用数据源方法的顺序?SDK导航节详细信息的顺序不会影响应用程序的行为或界面 非顺序调用可能取决于SDK内部使用的数组没有顺序这一事实。但是,再一次,你不应该担心这个“问题” 您声明正确的输出应该是有序的,但为什么 编辑 你在这里做错的是假设一个命令是在没有人向你保证的地方。对于要控制的每个部分,您应该使用不同的
大小写
实现一个开关
构造。数据源内容必须是确定性的,并且不应在没有控制的情况下动态更改
将所有外观委托给一个自动递增的值,该值根据调用该函数的顺序进行更新,这不是处理问题的方式。为什么要关心调用数据源方法的顺序?SDK导航节详细信息的顺序不会影响应用程序的行为或界面 非顺序调用可能取决于SDK内部使用的数组没有顺序这一事实。但是,再一次,你不应该担心这个“问题” 您声明正确的输出应该是有序的,但为什么 编辑 你在这里做错的是假设一个命令是在没有人向你保证的地方。对于要控制的每个部分,您应该使用不同的
大小写
实现一个开关
构造。数据源内容必须是确定性的,并且不应在没有控制的情况下动态更改
将所有外观委托给一个自动递增值,该值根据调用该函数的顺序进行更新,这不是处理问题的方式。没有修复方法,因为这不是问题。tableview请求数据和绘制数据的顺序对代码没有影响
您应该使用
indexPath.section
和indexPath.row
属性来确定tableview需要什么信息。没有修复方法,因为这不是问题。tableview请求数据和绘制数据的顺序对代码没有影响
您应该使用
indexPath.section
和indexPath.row
属性来确定tableview需要什么信息。为什么从第3节开始?真正的问题是:为什么你认为它应该从零开始?文档中没有定义调用方法的顺序,因此您不应该做出任何假设。在当前的实现中,它从表的底部开始工作,但是,同样,这是一个假设,在下一版本的iOS中,它可能会给您带来麻烦
解决方案是编写方法,这样无论请求的顺序如何,它都可以返回正确的结果。为什么从第3节开始?真正的问题是:为什么你认为它应该从零开始?文档中没有定义调用方法的顺序,因此您不应该做出任何假设。在当前的实现中,它从表的底部开始工作,但是,同样,这是一个假设,在下一版本的iOS中,它可能会给您带来麻烦
解决方案是编写该方法,这样无论请求的顺序如何,它都可以返回正确的结果。您的陈述基于什么:“正确的输出应该是…”?假设是编码时最大的敌人。因为
listofcomboxes
是一个NSMutableArray
包含三个NSMutableArray
s。第一个的计数是2,第二个是11,第三个是20。关键是为什么要从第三部分开始。这是真的,我的老板总是这样对我说me@robin当前位置是否有修复方法?我应该重新排列数组以修复它吗?您的陈述基于什么:“正确的输出应该是…”?假设是编码时最大的敌人。因为listofcomboxes
是一个NSMutableArray
包含三个NSMutableArray
s。第一个的计数是2,第二个是11,第三个是20。关键是为什么要从第三部分开始。这是真的,我的老板总是这样对我说me@robin当前位置是否有修复方法?我应该重新排列阵列以修复它吗?你怎么告诉我这不是问题!!!!!比如说何,