NSMutableArray拡張(項目の移動)

| コメント(0) | トラックバック(0)
NSMutableArrayに標準で用意されていない、項目の移動メソッドを拡張で実装します。

[NSMutableArray+MoveObject.h]

@interface NSMutableArray (MoveObject)


- (void)moveObjectFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex;


@end


[NSMutableArray+MoveObject.m]

@implementation NSMutableArray (MoveObject)


- (void)moveObjectFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex

{

if (fromIndex > toIndex) {

id dummy = [[[NSObject alloc] init] autorelease];

id obj = [self objectAtIndex:fromIndex];

[self insertObject:dummy atIndex:fromIndex];

[self removeObject:obj];

[self insertObject:obj atIndex:toIndex];

[self removeObject:dummy];

}

else if (toIndex > fromIndex) {

id obj = [self objectAtIndex:fromIndex];

[self removeObject:obj];

[self insertObject:obj atIndex:toIndex];

}

}


@end


使用例は次の通りです。
UITableViewでCellの移動を行い、データソースであるNSMutableArrayを適正な順序に並び替える処理を想定しています。

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

{

[self.dataList moveObjectFromIndex:sourceIndexPath.row toIndex:destinationIndexPath.row];

}



トラックバック(0)

トラックバックURL: http://www.ict-fractal.com/MovableType/mt/mt-tb.cgi/82

コメントする

Twitterボタン
Twitterブログパーツ