Добавить строки в существующий раздел UITableView

#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.

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html