Как реализовать разделы в табличном представлении, содержащие базу данных SQLite3? - PullRequest
0 голосов
/ 25 марта 2012

У меня есть приложение, которое отображает большое количество значений, используя UITableView и импортированную базу данных sqlite3.Теперь я столкнулся с проблемой, что мне нужно сделать разделы для элементов.Это должно быть похоже на «контакты» приложения по умолчанию в iPhone, но я не хочу, чтобы этот раздел сортировал элементы только по первой букве.База данных содержит данные о еде, поэтому разделы должны быть как «Хлеб», «Мясо», «Рыба» и т. Д.

Пожалуйста, помогите, любые советы будут оценены!

1 Ответ

0 голосов
/ 25 марта 2012

Создайте NSDictionary, ключом которого является заголовок для отображения, а значением является NSArray, который состоит из всех содержащихся объектов.Теперь сделайте следующее:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return [[dict allkeys]count];
   }
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection(NSInteger)section           
{

     //Number of rows it should expect should be based on the section
     NSArray *array = [dict objectForKey:[[dict allKeys] objectAtIndex:section]];
     return [array count];
}



  - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
        return [[dict allKeys] objectAtIndex:section];

  }

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   static NSString *CellIdentifier = @"Cell";

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (cell == nil) {
       cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
  }

  // Set up the cell...

  cell.text = [[dict objectForkey:[[dict allKeys] objectAtIndex:indexpath.section]] objectAtIndex:indexPath.row];

  return cell;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...