部分中的行数

Posted

技术标签:

【中文标题】部分中的行数【英文标题】:Rows Count In Section 【发布时间】:2018-06-26 07:39:03 【问题描述】:

在我的可扩展 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。

我在这里做错了什么?

【问题讨论】:

你能显示数组的格式吗?获取对象的视频索引,如果是单个数组则显示。 【参考方案1】:

这里的问题一定是你检查了所有当前可见的行。您应该再创建一个包含单元格编号的数组,然后将它们与获取文本相同。

每次更新行数据时都应该重新编号

- (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];

祝你好运!

【讨论】:

如预期的完美答案...谢谢。【参考方案2】:

我会做一些像节数组这样的结构,每个节都应该有一个标题和一个行数组。在 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"];

与其在尝试计算/访问您的数据时弄得一团糟,您应该在将其发送/显示到您的UIViewController 之前将其预先格式化为易于处理的结构。不要仅仅因为数据而弄脏你的UIViewController,它应该是相反的,你的视图应该是被动的。

我希望这是您所要求的,我不太确定您所说的“可扩展”表格视图是什么意思。

【讨论】:

以上是关于部分中的行数的主要内容,如果未能解决你的问题,请参考以下文章

部分中的行数

部分错误Swift中的行数

Swift 3 部分中的行数无效

错误:iPhone SDK 中 UITableView 部分中的行数

Swift Eureka forms:如何限制多值部分中的行数?

在获取数据期间索引超出部分中的行数范围