2011-12-04 4 views
1

J'ai un UITableView avec un ViewController comme source de données et délégué. Dans le même XIB, j'ai une cellule personnalisée pour ma barre de recherche. La première cellule de la vue de table est cette cellule. Sporadiquement, je reçois un accident à l'exception suivante:Sélecteur non reconnu UITableViewCell

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x5d76840' 

Gdb montre que c'est en fait ma cellule de recherche et qu'il est un enfant du tableview. De plus, une inspection plus poussée montre que la source de données pointe bien vers mon contrôleur de vue et non vers la cellule de la barre de recherche. Sur cette base, il semble que UIKit envoie simplement le message à la mauvaise cible. Quelqu'un a-t-il déjà vu quelque chose comme ça avant? Cela pourrait-il être un problème dans le simulateur?

pile complète:

*** Call stack at first throw: 
(
    0 CoreFoundation      0x012955a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x013e9313 objc_exception_throw + 44 
    2 CoreFoundation      0x012970bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x01206966 ___forwarding___ + 966 
    4 CoreFoundation      0x01206522 _CF_forwarding_prep_0 + 50 
    5 UIKit        0x006a26ff -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] + 111 
    6 UIKit        0x006a23b0 -[UITableViewRowData invalidateAllSections] + 66 
    7 UIKit        0x00559d23 -[UITableView(_UITableViewPrivate) _updateRowData] + 113 
    8 UIKit        0x0055565c -[UITableView noteNumberOfRowsChanged] + 105 
    9 UIKit        0x00562708 -[UITableView reloadData] + 773 
    10 Foundation       0x00c6e94e __NSThreadPerformPerform + 251 
    11 CoreFoundation      0x012768ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 
    12 CoreFoundation      0x011d488b __CFRunLoopDoSources0 + 571 
    13 CoreFoundation      0x011d3d86 __CFRunLoopRun + 470 
    14 CoreFoundation      0x011d3840 CFRunLoopRunSpecific + 208 
    15 CoreFoundation      0x011d3761 CFRunLoopRunInMode + 97 
    16 GraphicsServices     0x01d3e1c4 GSEventRunModal + 217 
    17 GraphicsServices     0x01d3e289 GSEventRun + 115 
    18 UIKit        0x004f5c93 UIApplicationMain + 1160 
    19 iPanopto       0x000020f9 main + 121 
    20 iPanopto       0x00002075 start + 53 
) 

Répondre

1

J'ai eu ce problème lorsque le UITableViewController n'a pas été fixé correctement dans le NIB ... ou la classe cellulaire personnalisée spécifique n'est pas défini dans le fichier NIB.

+0

Comment ne pas le fixer correctement? Quelque chose ne va pas avec la sortie? La cellule est définie dans le même NIB que la tableview. – George

+1

L'identificateur de classe doit être défini sur la classe personnalisée spécifique de la cellule. – craig1231

+0

Est-ce une erreur d'utiliser UITableViewCell? Je n'ai aucun comportement spécial que je veux faire avec la classe de cellules, je juste ai le contrôleur de vue manipule tout. – George

0

La vue parente de votre UITableView peut être diffusée dans les coulisses à cause de l'ARC. J'ai eu ce problème aussi une fois et a finalement été mis sur la bonne voie par this réponse (merci Thomas!). Notez que la racine de ce problème peut exister plutôt en amont de l'endroit où vit la table.

Questions connexes