Intereting Posts
Как я могу обновить / удалить уведомление из центра уведомлений? Поиск числителя дробного значения поплавка с учетом определенного знаменателя AVAudioPlayer, используя сеанс AmbientSound, не воспроизводится, когда приложение находится в фоновом режиме trigger.io error device-ios.app/Forge искаженный объект Вырезать представление с использованием метода drawRect Ошибка кода знака кода команды TeamCity 8 xcode 5 Могу ли я автоматически аутентифицировать приложение с помощью MDM? Amazon Kinesis с iOS UIToolBar черный на долю секунды при загрузке Знайте, когда анимация выполняется, когда анимация абстрагируется iOS как правильно установить максимальное и минимальное изображение MPVolumeView dyld: библиотека не загружена: @ rpath / Alamofire.framework / carthage Xcode: Неопределенные символы для архитектуры i386: DebugStringToFile при создании Unity Project для iOS Simulator Игнорировать событие касания UIButton в течение длительного времени Как прервать анимацию UIView до завершения?

Как я могу изменить numberOfRowsInSection, когда у меня есть несколько TableViews?

Это мой текущий код:

if (tableView == nearbyTV) { return numberOfObjects; } else { if (tableView == self.searchDisplayController.searchResultsTableView) { return [searchResults count]; } else { return [users count]; } } 

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

 *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 13 beyond bounds [0 .. 12]' 

Что я могу сделать, чтобы обновить количество строк для второй таблицы? Также я понимаю, как получать информацию из другого табличного представления, когда я прокручиваю. Очень расстраивает. Любая помощь вообще была бы очень оценена. Благодарю.

РЕДАКТИРОВАТЬ:

cellForRowAtIndexPath:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (tableView == friendsTV || tableView == self.searchDisplayController.searchResultsTableView) { static NSString *simpleTableIdentifier = @"SimpleTableCell"; SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil]; cell = [nib objectAtIndex:0]; }else{ cell.propic.image=nil; cell.flashBack.backgroundColor=[UIColor whiteColor]; [cell.button1 setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; } if (tableView == self.searchDisplayController.searchResultsTableView) { cell.fullName.text = [searchResults objectAtIndex:indexPath.row]; } return cell; }else{ static NSString *simpleTableIdentifier = @"nearbyTableCell"; nearbyTableCell *cell = (nearbyTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"nearbyTableCell" owner:self options:nil]; cell = [nib objectAtIndex:0]; }else{ cell.propic.image=nil; cell.flashBack.backgroundColor=[UIColor whiteColor]; [cell.button2 setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; } // NSLog(@"%@",[searchResults objectAtIndex:indexPath.row]); if (tableView == self.searchDisplayController.searchResultsTableView) { cell.fullName.text = [searchResults objectAtIndex:indexPath.row]; }else if (tableView==nearbyTV){ NSString *requestCombine = [NSString stringWithFormat:@"/%@",[[json objectAtIndex:indexPath.row] objectForKey:@"fbID"]]; [FBRequestConnection startWithGraphPath:requestCombine parameters:nil HTTPMethod:@"GET" completionHandler:^( FBRequestConnection *connection, id result, NSError *error ) { cell.fullName.text=[result objectForKey:@"name"]; }]; cell.fbIDLabel.text = [[json objectAtIndex:indexPath.row] objectForKey:@"fbID"]; } return cell; } } 

Проблема заключается не в использовании нескольких UITableView в одном классе.

Из журнала ошибок:

 *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 13 beyond bounds [0 .. 12]' 

Понятно, что при создании ячеек в методе cellForRowAtIndexPath вы пытаетесь получить доступ к объекту с индексом 13, а длина вашего массива – 13, т. cellForRowAtIndexPath Последний индекс – 12. Поэтому попробуйте отладить ваш массив и проверить механизм доступа к объектам из массивов при создании клетки. Может быть, вы возвращаете дополнительный счет в numberOfRowsInSection для своего nearbyTV .

РЕДАКТИРОВАТЬ 1: всегда полезно установить Exception Breakpoint в ваших проектах, поскольку он указывает точное местоположение кода сбоя. Установите точку останова исключения для отслеживания массива, при котором произошел сбой при доступе к элементу для отслеживания реальной проблемы.

EDIT 2: Как видно из метода cellForRowAtIndexPath , searchResults и json – это два массива, из которых вы собираете объекты, которые будут отображаться на ячейках. Счетчик строк, возвращаемый из numberOfRowsInSection должен соответствовать количеству объектов в searchResults и json массивах, чтобы заставить ваш код работать правильно. Проблема заключается в одном из этих массивов. Отладка, чтобы увидеть количество объектов, присутствующих в searchResults и json массивов, и количество строк, возвращаемое методом numberOfRowsInSection .

Попробуйте этот код, я надеюсь, что он может сработать для вас.

  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if ([tableView isEqual:nearbyTV]) { return [Your nearbyTVarray's count]; } elseIf ([tableView isEqual:nearbyTV]) { return [searchResults count]; } return [users count]; } 

Проверьте, что возвращается таблица,

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ { if(tableView == firstTableView){ return 10; } return 15; } 

Он возвращает первые ячейки tableView 10 и другие таблицы 15 ячеек. измените условие else с тем, сколько у вас таблицы.

попробуй это

 (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ if ([tableView isEqual:firstTableVIew]) { return [array1 count]; } elseIf ([tableView isEqual:secondTableView]) { return [array2 count]; } } 

и обязательно добавьте проверку того if([tableView isEqual:yourTableVIew] в cellForRowAtIndexPath также

Также предполагая, если каждому представлению таблицы назначен свой раздел:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { switch (section) { case 0: return [array1 count]; break; case 1: return [array2 count]; break; default: // Handle others break; } }