#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