重新加载UITableView,但其中一部分除外

时间:2019-01-15 14:16:07

标签: ios objective-c swift uitableview

我有一个包含多个部分的tableView。
现在,我想重新加载tableView的所有部分,除了第一个部分(因为它是静态的并且不会改变)。

我现在可以通过此方法重新加载部分:

reloadSections(IndexSet, with: UITableView.RowAnimation)

但是它需要部分的数量,并且在我的应用中这是动态的并且随时间变化。
我只能说重新载入第一节之后的内容。

我认为我应该这样定义IndexSet

NSIndexSet *indexSet = [NSIndexPath indexPathWithIndexes:(NSUInteger[]){1, ... } length:???];

我不知道该怎么办!

任何想法或建议将不胜感激。

  

更新

这是numberOfSectionsInTableView的实现:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    // Inbox Segment
    if (self.selectedIndex == 0) {
        if (self.inboxArray.count > 0) {
            return self.inboxArray.count + 2;
        }
    }

    // Sent Segment
    else if (self.selectedIndex == 1) {
        if (self.sentArray.count > 0) {
            return self.sentArray.count + 2;
        }
    }

    // Outbox Segment
    else if (self.selectedIndex == 2) {
        if (self.outboxArray.count > 0) {
            return self.outboxArray.count + 2;
        }
    }

    // Spam Segment
    else if (self.selectedIndex == 3) {
        if (self.spamArray.count > 0) {
            return self.spamArray.count + 2;
        }
    }

    // Trash Segment
    else if (self.selectedIndex == 4) {
        if (self.trashArray.count > 0) {
            return self.trashArray.count + 2;
        }
    }
    return 1;
}

1 个答案:

答案 0 :(得分:0)

假设您知道部分的数量:

NSIndexSet *sectionsIndexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, self.sections.count - 1)]
[self.tableView reloadSections:sectionsIndexSet withRowAnimation:UITableViewRowAnimationNone];

迅速:

let sectionsIndexSet = IndexSet(1..<sections.count)
tableView.reloadSections(sectionsIndexSet, with: .none)