0

のアクセサリビューにカスタムボタンを作成しましたUITableViewCell。ボタンは、リストビューのカスタマイズされたチェックボックスとして機能します。

プログラムで「チェック済み」アイテムをの2番目のセクションに移動したいの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];
}

2つの配列に注意してください。チェックされていないアイテムはallGuestsPending配列に入れられ、チェックされたゲストはallGuestsArrived配列に入る必要があります。

このメソッドは、行がタップされたときに呼び出されます。アイテムがチェックされ、テーブルビューの1つのセクションから別の2つのセクションに移動されます(配列と一致します)。

もちろん、列挙中にオブジェクトを削除することはできないので、移動したオブジェクトを変数に入れてから、新しい配列に追加しながら、以前の配列からオブジェクトを削除しようとしています。

上記の方法では、配列の最後の項目が常に新しいセクションに移動します。

この種のことをするためのより良い方法はありますか?

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 に答える