0

我在附件视图中创建了一个自定义按钮UITableViewCell。该按钮充当列表视图中的自定义复选框。

我想以编程方式将“已检查”项目移动到 的第二部分UITableView,但我在执行此操作时遇到了困难。

我正在关注 MVC,并且didArrive在以下方法中使用 BOOL, 对选中的项目进行排序:

- (void)shuffleGuests
{
    RCGuestManager *movedGuest = [[RCGuestManager alloc] init];
    for (id guest in allGuestsPending) {
        if ([guest didArrive]) {
            [allGuestsArrived addObject:guest];
            movedGuest = guest;
        }
    }
    [allGuestsPending removeObjectIdenticalTo:movedGuest];
}

注意这两个数组。未选中的项目应该进入 allGuestsPending 数组,选中的客人应该进入 allGuestsArrived 数组。

当点击一行时调用此方法。检查该项目,然后将其从表视图中的一个部分移到另一个(与数组匹配)。

当然,我不能在枚举期间删除一个对象,所以我试图将移动的对象放入一个变量中,然后将其从以前的数组中删除,同时将其添加到新数组中。

上述方法导致数组中的最后一项总是移动到新部分。

有没有更好的方法来做这种事情?

4

1 回答 1

0

请尝试以下想法:

NSMutableArray *guestsToRemove = [NSMutableArray array];
for (id guest in allGuestsPending) {
    if ([guest didArrive]) {
        [allGuestsArrived addObject: guest];
        [guestsToRemove addObject: guest];
    }
}
[allGuestsPending removeObjectsInArray: guestsToRemove];
于 2012-05-06T12:51:58.417 回答