2016-05-26 3 views
3

Да, так много вопросов по этому названию. Но никто не решил мою проблему. В моем приложении я использую разделы в виде таблицы, чтобы отображать выпадающее меню при нажатии на них. И есть UIButton для добавления данных, и для добавления пользователя требуется другое представление. После того, как пользователь добавляет данные и нажимает, я использую диспетчер смещения для возврата. Итак, теперь ни один из разделов не будет +1 с новыми данными. Когда пользователь нажимает на участке в настоящее время приложение завершает работу с этой ошибкой'Неверное обновление: неверное количество разделов

«NSInternalInconsistencyException», причина: «Invalid обновление: неверное число разделов. Количество разделов, содержащихся в представлении таблицы после обновления (35), должно быть равно количеству разделов, содержащихся в представлении таблицы перед обновлением (34), плюс или минус количество вставленных или удаленных разделов (0 вставлено, 0 удален).

мой код

NSMutableArray *tempArr=[[NSMutableArray alloc]init]; 
    for(int i=0;i<username_rank.count;i++) 
    { 
     NSIndexPath *indexx=[NSIndexPath indexPathForRow:i inSection:btn.tag]; 
     [tempArr addObject:indexx]; 
    } 

    [tournament_table insertRowsAtIndexPaths:tempArr withRowAnimation:UITableViewRowAnimationTop]; 

*** First throw call stack: 
(
0 CoreFoundation      0x000000010e7b7d85 __exceptionPreprocess + 165 
1 libobjc.A.dylib      0x000000010e22bdeb objc_exception_throw + 48 
2 CoreFoundation      0x000000010e7b7bea +[NSException raise:format:arguments:] + 106 
3 Foundation       0x000000010de75d5a -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198 
4 UIKit        0x000000010fbca0dc -[UITableView _endCellAnimationsWithContext:] + 14140 
5 UIKit        0x000000010fbe0cf0 -[UITableView _updateRowsAtIndexPaths:updateAction:withRowAnimation:] + 303 
6 Sports Lion       0x000000010d720c3f -[entertheden Btntap_expand:] + 447 
7 UIKit        0x000000010fa9ca8d -[UIApplication sendAction:to:from:forEvent:] + 92 
8 UIKit        0x000000010fc0fe67 -[UIControl sendAction:to:forEvent:] + 67 
9 UIKit        0x000000010fc10143 -[UIControl _sendActionsForEvents:withEvent:] + 327 
10 UIKit        0x000000010fc0f263 -[UIControl touchesEnded:withEvent:] + 601 
11 UIKit        0x000000010ff84c52 _UIGestureRecognizerUpdate + 10279 
12 UIKit        0x000000010fb0f48e -[UIWindow _sendGesturesForEvent:] + 1137 
13 UIKit        0x000000010fb106c4 -[UIWindow sendEvent:] + 849 
14 UIKit        0x000000010fabbdc6 -[UIApplication sendEvent:] + 263 
15 UIKit        0x000000010fa95553 _UIApplicationHandleEventQueue + 6660 
16 CoreFoundation      0x000000010e6dd301 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
17 CoreFoundation      0x000000010e6d322c __CFRunLoopDoSources0 + 556 
18 CoreFoundation      0x000000010e6d26e3 __CFRunLoopRun + 867 
19 CoreFoundation      0x000000010e6d20f8 CFRunLoopRunSpecific + 488 
20 GraphicsServices     0x0000000113250ad2 GSEventRunModal + 161 
21 UIKit        0x000000010fa9af09 UIApplicationMain + 171 
22 Sports Lion       0x000000010d77050f main + 111 
23 libdyld.dylib      0x0000000111d4c92d start + 1 
24 ???         0x0000000000000001 0x0 + 1 

) LibC++ abi.dylib: оканчивающиеся неперехваченного исключением типа NSException

Благодаря

+0

Показать полный стек. – trojanfoe

+0

Добавлено @trojanfoe – nandy

+0

ОК, поэтому текст исключения объясняет, какова фактическая проблема, да? Вы изменили 0 строк после вызова 'updateRowsBlahBlah'. Если вы добавляете данные в модель в другой контроллер представления, который с тех пор был уволен, то это не вызов для записи, если вы спросите меня. Также ваш вопрос рассказывает о разделах, но вызовы/ошибки/etc, похоже, относятся к строкам. – trojanfoe

ответ

0

Вы должны перезагрузить вид таблицы, когда есть изменение источника данных. Таким образом, вы можете вызвать метод [yourTableView reloadData].

+4

Это будет выглядеть ужасно, правда, не так ли? , – trojanfoe

+0

@ user3409280: Это было предложено мной в комментариях по крайней мере за 20 минут до того, как вы ответили. Пожалуйста, прочитайте комментарии. Я мог бы проголосовать за ваш ответ. –

+0

@SandeepBhandari. Вы не должны стремиться к тому, чтобы вы считали, что этот пользователь украл вашу идею. Он фактически работает (как подтверждается OP), поэтому он не «неправильный», что должно быть единственной причиной для downvoting. Сказав, что я тоже иногда извиняюсь от злости; мы только люди. – trojanfoe

 Смежные вопросы

  • Нет связанных вопросов^_^