2015-02-16 6 views
-1

мой код:неперехваченное исключение ошибок 'NSInvalidArgumentException' во время выполнения

- (void) tableView:(UITableView *)tableView 
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
    forRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if (editingStyle == UITableViewCellEditingStyleDelete){ 
     /* First remove this object from the source */ 
     [self.allRows removeObjectAtIndex:indexPath.row]; 

     /* Then remove the associated cell from the Table View */ 
     [tableView deleteRowsAtIndexPaths:@[indexPath] 
         withRowAnimation:UITableViewRowAnimationFade]; 

     } 
} 

я получаю ошибку следующим образом

 
2015-02-16 11:57:32.413 SimpleTable[1590:45462] -[ViewController refreshControl]: unrecognized selector sent to instance 0x7fa1d2d936c0 
2015-02-16 11:57:32.415 SimpleTable[1590:45462] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController refreshControl]: unrecognized selector sent to instance 0x7fa1d2d936c0' 
*** First throw call stack: 
(
    0 CoreFoundation      0x000000010d738f35 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x000000010d3d1bb7 objc_exception_throw + 45 
    2 CoreFoundation      0x000000010d74004d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 
    3 CoreFoundation      0x000000010d69827c ___forwarding___ + 988 
    4 CoreFoundation      0x000000010d697e18 _CF_forwarding_prep_0 + 120 
    5 UIKit        0x000000010db268be -[UIApplication sendAction:to:from:forEvent:] + 75 
    6 UIKit        0x000000010db268be -[UIApplication sendAction:to:from:forEvent:] + 75 
    7 UIKit        0x000000010dc2d410 -[UIControl _sendActionsForEvents:withEvent:] + 467 
    8 UIKit        0x000000010dc2c7df -[UIControl touchesEnded:withEvent:] + 522 
    9 UIKit        0x000000010db6c308 -[UIWindow _sendTouchesForEvent:] + 735 
    10 UIKit        0x000000010db6cc33 -[UIWindow sendEvent:] + 683 
    11 UIKit        0x000000010db399b1 -[UIApplication sendEvent:] + 246 
    12 UIKit        0x000000010db46a7d _UIApplicationHandleEventFromQueueEvent + 17370 
    13 UIKit        0x000000010db22103 _UIApplicationHandleEventQueue + 1961 
    14 CoreFoundation      0x000000010d66e551 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    15 CoreFoundation      0x000000010d66441d __CFRunLoopDoSources0 + 269 
    16 CoreFoundation      0x000000010d663a54 __CFRunLoopRun + 868 
    17 CoreFoundation      0x000000010d663486 CFRunLoopRunSpecific + 470 
    18 GraphicsServices     0x0000000110d079f0 GSEventRunModal + 161 
    19 UIKit        0x000000010db25420 UIApplicationMain + 1282 
    20 SimpleTable       0x000000010cea27d3 main + 115 
    21 libdyld.dylib      0x000000010fcc8145 start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 
+0

Это не ошибка во время сборки. Это исключение во время выполнения, когда приложение действительно работает. – rmaddy

+0

yes Ошибка при запуске приложения –

+0

Попробуйте использовать ваше свойство, а не отправленный экземпляр. –

ответ

1

Я думаю, ваш TableView может быть освобождение после его создания, и метод заканчивается. Вероятно, вам нужно создать переменную экземпляра внутри контроллера View, которая ссылается на нее.

@property (strong, nonatomic) IBOutlet UITableView *tablview; 

Затем удалите соответствующую ячейку из таблицы View

[self.tablview deleteRowsAtIndexPaths:@[indexPath] 
         withRowAnimation:UITableViewRowAnimationFade]; 

может помочь вам ..

+0

ошибка: internalincnsistency exceptoin –

+0

использовать эту ссылку может вам помочь .. http://stackoverflow.com/questions/5454708/nsinternalinconsistencyexception-invalid-number-of-rows – Chandan

+0

Я тоже пробовал это –

-1

Попробуйте

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
    //remove the row from data model 
    [tableData removeObjectAtIndex:indexPath.row]; 
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
} 
+0

Что это связано с исключением? И зачем перезагружать стол? Просто удалите одну строку. – rmaddy

+1

Необходимо перезагрузить tableView, потому что вы удаляете объект из массива, поэтому никакие ячейки не должны повторяться, поэтому ваше приложение дает вам ошибку времени выполнения. Когда вы перезагружаете таблицу, она воссоздает количество ячеек. – Bhargav

+0

Это просто неправда. Если количество строк не совпало, это будет совершенно другая ошибка. И вам не нужно перезагружать таблицу. Просто удаление одной строки в порядке. Код, размещенный в вопросе, в порядке. Ваш ответ не имеет ничего общего с опубликованным исключением. – rmaddy