#objective-c #cocoa-touch #ios #uitableview
#objective-c #cocoa-touch #iOS #uitableview
Вопрос:
Я пытаюсь получить некоторый пример кода о том, как я бы добавил строки в существующий UITableView
. Я пытаюсь использовать insertRowsAtIndexPaths:
функцию.
[tableView insertRowsAtIndexPaths:addindexes withRowAnimation:UITableViewRowAnimationTop];
Есть идеи, как работают эти индексы и как я могу добавить в существующий раздел или, если у меня нет раздела, создать новый раздел?
Ответ №1:
Вы должны создать массив indexpaths как —
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
например, если вы хотите вставить 2-ю строку в раздел 0 и у вас уже есть 1 строка в разделе 0, затем создайте путь индекса для строки 1 в разделе 0 и вызовите insertRowsAtIndexPaths в табличном представлении, он вставит 2-ю строку в раздел.
Если в табличном представлении нет раздела, то вы должны использовать int для источника данных, чтобы не указывать разделы в табличном представлении, в этом использовании —
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return noOfSection; //here section is as int which is initially zero
}
и изначально ваш int «noOfSection» будет равен нулю, тогда в таблице не будет раздела, затем, когда вы захотите добавить раздел, увеличьте значение int на 1 и вызовите [tableView reloadData];
Ответ №2:
Вам необходимо обработать эти функции, если вы собираетесь вставить строку и раздел в табличное представление.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return noOfSections;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[noOfRows objectForIndex:section] intValue];
}
также, если вы обновляете свое табличное представление, рекомендуется использовать методы beginUpdates и endUpdates.
вот как вы вставляете новую строку и раздел.
noOfSections ;
[self.tableView insertSections:[NSIndexSet indexSetWithIndex:3] withRowAnimation:UITableViewRowAnimationTop];
// update your array before calling insertRowsAtIndexPaths: method
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:2]]
withRowAnimation:UITableViewRowAnimationTop];
проверьте пример кода, предоставленный Apple.