2012-12-20 2 views
1

Следуя моему последнему вопросу, у меня есть табличное представление, заполненное 2 NSMutableArrays, 2 разделами и 2 разделами заголовков, все из которых работают нормально.Как перенести данные из одного массива в другой? Использование UITableView

incompleteItems = [NSMutableArray arrayWithObjects: @"Item 1", @"Item 2", @"Item 3"... , nil]; 

completeItems = [NSMutableArray arrayWithObjects: nil]; 

Я поставил его так, что когда пользователь пойло справа, ячейка аксессуар изменения от раскрытия необходимо отметить галочками, и когда Смахивающее левых изменений с флажком разглашению. Жесты достигаются с помощью методов handleSwipeLeft/Right.

Что бы я хотел сделать, это когда пользователь переместился вправо, элемент из массива incompleteItems перемещается в массив завершенных элементов, перемещая элемент из раздела «Неполный» в раздел «Полный».

Что было бы лучшим способом достичь такого? Мой опыт ограничен, так что это несколько не в моих силах.

Любая помощь оценивается как всегда.

ответ

1

Вы можете просто добавить объект из одного массива в другой, а затем удалить его немедленно.

-(void)incompleteToCompleteAtIndex:(NSUInteger)index 
{ 
    [complete addObject:[incompleteItems objectAtIndex:index]]; 
    [incompleteItems removeObjectAtIndex:index]; 
} 

-(void)completeToIncompleteAtIndex:(NSUInteger)index 
{ 
    [incompleteItems addObject:[complete objectAtIndex:index]]; 
    [complete removeObjectAtIndex:index]; 
} 

Так как это будет происходить только в результате действий пользовательского интерфейса я полагаю, что это будет происходить в основном потоке, и не будет никаких оснований для блокировки.

+0

+1 это. Вам также потребуется перезагрузить табличное представление, чтобы вызвать метод «rowForIndexPath» (я думаю, что это так называется), и возвращается новый объект. Вы также должны рассмотреть перемещение выбранной строки таблицы, которая означает, что пользователь должен сначала выбрать одну строку. – dmoss18

+0

Спасибо Джо, в то время как методы имеют смысл, я не уверен, как их вставить. Я предполагаю, что мне нужно, чтобы кто-то получил первую ячейку? Или я пропустил это? : S @ dmoss18 Будет ли это [self.tableView reloadData] под cellForRowAtIndexPath? – mattFllr

0

Вам нужна приятная анимация? Выезд: deleteRowsAtIndexPaths:withRowAnimation: и insertRowsAtIndexPaths:withRowAnimation:. Обязательно заверните эти вызовы в beginUpdates и endUpdates.

Я не знаю, как легко перемещать камеру из одного стола в другой. Я могу представить себе метод, который требует, чтобы вы сделали трехэтапную анимацию вручную, удалив ячейку (и добавив ее в новое представление, которое плавает перед вашей всей иерархией представлений), перемещая новое представление в место назначения (вы можете нужно сделать свою собственную математику, чтобы определить координаты экрана места назначения) и, наконец, анимацию добавления. Вы можете использовать фиктивную ячейку, которая является полностью прозрачной, и обменивать ее в/в первой и последней части анимации, чтобы дать таблице вид что-то удерживать место вашей переданной ячейки.

Смежные вопросы