Добавить / удалить данные в источник данных TableView программно - PullRequest
0 голосов
/ 24 августа 2010

HI @ll!

Я хочу добавить и удалить некоторые элементы из моего источника данных программно для моего просмотра таблицы.

Прежде всего: чего я хочу достичь? У меня есть UIView с элементом управления TTTableView (Tableview из проекта Three20, но полученный из общего элемента управления UITableView) Этот TableView работает хорошо и имеет объект TTSegmentedDataSource, присоединенный как источник данных. В настоящее время TableView показывает компонент UISwitch. Я хочу показать и скрыть некоторые элементы над элементом управления UISwitch в соответствии с состоянием переключателя. И элементы должны скрываться и отображаться с использованием обычной анимации TableView, так же как пользователь добавил или удалил элемент.

Я уже пытался это сделать, но я не понимаю.

Например:

[self.treeView beginUpdates];
[[((TTSegmentedDataSource*)self.treeView.datasource).items objectAtIndex:0] removeObject: objectToBeRemoved];
[self.treeView endUpdates];
[self.treeView reloadData];

Это не сработало, а также выдало исключение.

Какое решение? Как программно добавлять и удалять элементы из TableView?

Надеюсь, вы можете мне помочь! THX!

C YA

Ответы [ 3 ]

1 голос
/ 24 августа 2010

Спасибо за подсказку cooltechnomax.

Я нашел решение.Вот пример:

[states removeObjectAtIndex:4]; // Washington
[states removeObjectAtIndex:2]; // Delaware

[states insertObject:@"Alaska" atIndex:0];
[states insertObject:@"Georgia" atIndex:3];
[states insertObject:@"Virginia" atIndex:5];

NSArray *deleteIndexPaths = [NSArray arrayWithObjects:
                            [NSIndexPath indexPathForRow:2 inSection:0],
                            [NSIndexPath indexPathForRow:4 inSection:0],
                            nil];

NSArray *insertIndexPaths = [NSArray arrayWithObjects:
                            [NSIndexPath indexPathForRow:0 inSection:0],
                            [NSIndexPath indexPathForRow:3 inSection:0],
                            [NSIndexPath indexPathForRow:5 inSection:0],
                            nil];

UITableView *tv = (UITableView *)self.view;

[tv beginUpdates];

[tv insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationRight];
[tv deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];

[tv endUpdates];
1 голос
/ 24 августа 2010

Попробуйте заглянуть в:

-(void)insertSections:(NSIndexSet *)sections withRowAnimation:UITableViewRowAnimation)animation
-(void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
0 голосов
/ 09 ноября 2010

Как насчет просто изменить модель и позвонить "reloadData" [TV reloadData]

...