Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableView行数分段顺序问题_Iphone_Objective C_Uitableview - Fatal编程技术网

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当前位置是否有修复方法?我应该重新排列阵列以修复它吗?你怎么告诉我这不是问题!!!!!比如说何,