行数在部分
Rows Count In Section
在 My Expandable UITableview
中,部分的数量是 5 [SectionItems.count]
。
我的目标是对部分中的所有单元格进行编号,从 1 到所有行的计数(编号不应考虑部分)。
这是我计算行数的代码
NSInteger count = 0;
for (NSInteger sec=0; sec < indexPath.section; sec++) {
NSInteger rows = [tableView numberOfRowsInSection:sec];
count += rows;
}
count += indexPath.row + 1;
NSArray *sect = [sectionItem objectAtIndex:indexPath.section];
cell.titleLbl.text = [NSString stringWithFormat:@"%ld %@",(long)count,[sect objectAtIndex:indexPath.row]];
但我得到了您在下一张图片中看到的内容:
问题是第一部分(版本控制方案)有一行,所以这两个数字应该是 2 和 3 而不是 1 和 2。
我做错了什么?
这里的问题一定是您检查了所有当前可见的行。您应该再创建一个包含单元格编号的数组,然后让它们与获取文本时相同。
每次更新行数据时都应该重做编号
- (NSArray *)numberCells {
NSArray *numbersArray = [[NSArray alloc] init];
NSInteger num = 1;
for (NSArray *ar in sectionItem) {
NSArray *rowArray = [[NSArray alloc] init];
for (id item in ar) {
rowArray = [rowArray arrayByAddingObject:[NSNumber numberWithInteger:num]];
num += 1;
}
numbersArray = [numbersArray arrayByAddingObject:rowArray];
}
return numbersArray;
}
在需要时像这样更新数组 属性:myArray = [self numberCells];
然后像这样获取单元格编号:
NSArray *rowArray = [numbersArray objectAtIndex:indexPath.section];
NSNumber *num = [rowArray objectAtIndex:indexPath.row];
祝你好运!
我会做一些像节数组这样的结构,每个节都应该有一个标题和一个行数组。在 JSON 风格中,类似于:
[
{
"section_title": "My section 1",
"section_rows": [
{"title": "Lecture 1"},
{"title": "Lecture 2"}
]
},
{
"section_title": "My section 2",
"section_rows": [
{"title": "Lecture 3"},
{"title": "Lecture 4"}
]
}
]
这样,您的方法将类似于:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return myArray.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
__weak NSDictionary *section = myArray[section];
return [section[@"section_rows"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
__weak NSDictionary *lecture = myArray[indexPath.section][@"section_rows"][indexPath.row];
// Configure your cell here
}
// This method should probably be replaced with this one from UITableViewDelegate:
// - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
__weak NSDictionary *sectionInfo = myArray[section];
return sectionInfo[@"title"];
}
与其尝试 count/access 您的数据弄得一团糟,您应该 pre-format 在 sending/showing 将其放在您的 UIViewController
之前,将其转换为易于处理的结构。不要因为数据而让你的 UIViewController
变脏,应该反过来,你的观点应该是被动的。
我希望这就是你要的,我不太清楚你所说的 "expandable" table 视图是什么意思。
在 My Expandable UITableview
中,部分的数量是 5 [SectionItems.count]
。
我的目标是对部分中的所有单元格进行编号,从 1 到所有行的计数(编号不应考虑部分)。
这是我计算行数的代码
NSInteger count = 0;
for (NSInteger sec=0; sec < indexPath.section; sec++) {
NSInteger rows = [tableView numberOfRowsInSection:sec];
count += rows;
}
count += indexPath.row + 1;
NSArray *sect = [sectionItem objectAtIndex:indexPath.section];
cell.titleLbl.text = [NSString stringWithFormat:@"%ld %@",(long)count,[sect objectAtIndex:indexPath.row]];
但我得到了您在下一张图片中看到的内容:
问题是第一部分(版本控制方案)有一行,所以这两个数字应该是 2 和 3 而不是 1 和 2。
我做错了什么?
这里的问题一定是您检查了所有当前可见的行。您应该再创建一个包含单元格编号的数组,然后让它们与获取文本时相同。
每次更新行数据时都应该重做编号
- (NSArray *)numberCells {
NSArray *numbersArray = [[NSArray alloc] init];
NSInteger num = 1;
for (NSArray *ar in sectionItem) {
NSArray *rowArray = [[NSArray alloc] init];
for (id item in ar) {
rowArray = [rowArray arrayByAddingObject:[NSNumber numberWithInteger:num]];
num += 1;
}
numbersArray = [numbersArray arrayByAddingObject:rowArray];
}
return numbersArray;
}
在需要时像这样更新数组 属性:myArray = [self numberCells];
然后像这样获取单元格编号:
NSArray *rowArray = [numbersArray objectAtIndex:indexPath.section];
NSNumber *num = [rowArray objectAtIndex:indexPath.row];
祝你好运!
我会做一些像节数组这样的结构,每个节都应该有一个标题和一个行数组。在 JSON 风格中,类似于:
[
{
"section_title": "My section 1",
"section_rows": [
{"title": "Lecture 1"},
{"title": "Lecture 2"}
]
},
{
"section_title": "My section 2",
"section_rows": [
{"title": "Lecture 3"},
{"title": "Lecture 4"}
]
}
]
这样,您的方法将类似于:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return myArray.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
__weak NSDictionary *section = myArray[section];
return [section[@"section_rows"] count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
__weak NSDictionary *lecture = myArray[indexPath.section][@"section_rows"][indexPath.row];
// Configure your cell here
}
// This method should probably be replaced with this one from UITableViewDelegate:
// - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
__weak NSDictionary *sectionInfo = myArray[section];
return sectionInfo[@"title"];
}
与其尝试 count/access 您的数据弄得一团糟,您应该 pre-format 在 sending/showing 将其放在您的 UIViewController
之前,将其转换为易于处理的结构。不要因为数据而让你的 UIViewController
变脏,应该反过来,你的观点应该是被动的。
我希望这就是你要的,我不太清楚你所说的 "expandable" table 视图是什么意思。