Как удалить нулевые значения в заголовке таблицы Objective C, Xcode

#ios #iphone #objective-c #xcode #uitableview

#iOS #iPhone #objective-c #xcode #uitableview

Вопрос:

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

На данный момент это мой код:

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *view=[DetailGroupHeader loadInstanceFromNib];
    NSDictionary *category = [self.categories objectAtIndex:section];
    if ([[self.restaurant objectForKey:@"restaurant_id"] isEqual:[category objectForKey:@"restaurant_id"]]) {
        DetailGroupHeader *headerView=(DetailGroupHeader *)view;
        headerView.lblTitle.text=[category objectForKey:@"maincatename"];
        headerView.btnReveal.indexPath=[NSIndexPath indexPathForRow:0 inSection:section];
    }
    return view;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return self.categories.count;
}
 

В верхней части -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section я инициирую имена заголовков, и эта часть работает отлично.
Однако, когда я перехожу к следующей функции -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView , чтобы подсчитать количество заголовков, в которых я получаю нулевые значения, как я могу избавиться от нулевых значений в заголовке?

Комментарии:

1. Где именно вы получаете нулевые значения? Ваш массив self.categories даже инициализирован? Вы установили точку останова для отображения содержимого?

2. Я получил нулевые значения в заголовке, если restaurant_id в self.restaurant не соответствует restaurant_id в категории restaurant_id . Также не совсем уверен, как установить точку останова для отображения содержимого.

Ответ №1:

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *view=[DetailGroupHeader loadInstanceFromNib];
    NSDictionary *category = [self.categories objectAtIndex:section];
    if ([[self.restaurant objectForKey:@"restaurant_id"] isEqual:[category objectForKey:@"restaurant_id"]]) {
        DetailGroupHeader *headerView = (DetailGroupHeader *)view;
        NSString *maincateName = [category objectForKey:@"maincatename"];
        if ([maincateName isEqual:[NSNull null]]) {
            maincateName = @"";
        }
        headerView.lblTitle.text = maincateName;
        headerView.btnReveal.indexPath = [NSIndexPath indexPathForRow:0 inSection:section];
    }

    return view;
}
 

Комментарии:

1. Я все еще получаю пустые заголовки с этим. В функции self.categories.count у меня есть 482 записи, которые она подсчитывает. Если restaurant_id совпадает, я бы хотел, чтобы пустые заголовки исчезли.

Ответ №2:

Я считаю, что вы допускаете некоторые действительно основные ошибки. Как я вижу, вы показываете только те строки, которые имеют [[self.restaurant objectForKey:@"restaurant_id"] isEqual:[category objectForKey:@"restaurant_id"]] условие true. Но вы возвращаете numberOfSectionsInTableView количество полных categories массивов как self.categories.count

Я предложу вам проверить:

  • Вычислить количество заголовков, где условие [[self.restaurant objectForKey:@"restaurant_id"] isEqual:[category objectForKey:@"restaurant_id"]] удовлетворяет
  • Проверьте, действительно ли условие, с которым вы работаете, существует (распечатать журнал или установить точку останова)

Это все, что я могу сказать на данный момент. Если проблема сохраняется, добавьте распечатку журнала вашего self.restaurant словаря и self.categories массива.

Комментарии:

1. Что я хочу сделать, так это подсчитать количество результатов, которые я получаю, когда restaurant_id из self.restaurant совпадает с restaurant_id из category

2. ОК. Это именно то, что я сказал!

3. Знаете ли вы, как это сделать, поскольку именно здесь я застрял

4. Да, почему бы и нет. Создайте функцию, задайте в ней цикл, создайте newArray и добавьте все записи, которые удовлетворяют вашему условию, в newArray. А затем сделайте newArray источником данных вашей таблицы.

5. Не могли бы вы помочь мне с помощью Skype, мой идентификатор jaw.khan