2014-12-16 12 views
6

HI Osservo molti tutorial per creare finalmente un'app per l'app store. Recentemente mi sono interessato a tableViews quindi ho seguito molti tutorial e mi sembra di ottenere sempre un errore mentre le persone nel tutorial riescono a costruire la loro app. Quando provo a eseguire la mia app, l'edificio si ferma e ottengo un'eccezione nella classe AppDelegate sulla riga dove si dice "class AppDelegate ..." l'eccezione è "Thread 1: signal SIGABRT"ottengo un errore quando provo a creare una tabellaView in swift per iphone

e per quelli interessati qui è il messaggio nella console.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'must pass a class of kind UITableViewHeaderFooterView' 
*** First throw call stack: 
(
    0 CoreFoundation      0x0000000109c80f35 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x000000010b7c4bb7 objc_exception_throw + 45 
    2 CoreFoundation      0x0000000109c80e6d +[NSException raise:format:] + 205 
    3 UIKit        0x000000010a5fb254 -[UITableView registerClass:forHeaderFooterViewReuseIdentifier:] + 247 
    4 tableviewtes      0x0000000109a9cc3c _TFC12tableviewtes14ViewController11viewDidLoadfS0_FT_T_ + 460 
    5 tableviewtes      0x0000000109a9ccd2 _TToFC12tableviewtes14ViewController11viewDidLoadfS0_FT_T_ + 34 
    6 UIKit        0x000000010a631a90 -[UIViewController loadViewIfRequired] + 738 
    7 UIKit        0x000000010a631c8e -[UIViewController view] + 27 
    8 UIKit        0x000000010a550ca9 -[UIWindow addRootViewControllerViewIfPossible] + 58 
    9 UIKit        0x000000010a551041 -[UIWindow _setHidden:forced:] + 247 
    10 UIKit        0x000000010a55d72c -[UIWindow makeKeyAndVisible] + 42 
    11 UIKit        0x000000010a508061 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2628 
    12 UIKit        0x000000010a50ad2c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1350 
    13 UIKit        0x000000010a509bf2 -[UIApplication workspaceDidEndTransaction:] + 179 
    14 FrontBoardServices     0x000000010d3512a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16 
    15 CoreFoundation      0x0000000109bb653c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 
    16 CoreFoundation      0x0000000109bac285 __CFRunLoopDoBlocks + 341 
    17 CoreFoundation      0x0000000109bac045 __CFRunLoopRun + 2389 
    18 CoreFoundation      0x0000000109bab486 CFRunLoopRunSpecific + 470 
    19 UIKit        0x000000010a509669 -[UIApplication _run] + 413 
    20 UIKit        0x000000010a50c420 UIApplicationMain + 1282 
    21 tableviewtes      0x0000000109a9faee top_level_code + 78 
    22 tableviewtes      0x0000000109a9fb2a main + 42 
    23 libdyld.dylib      0x000000010bf9e145 start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 
+0

eseguire l'applicazione con il punto di interruzione "tutte le eccezioni" e mostrarci dove nel codice si verifica l'eccezione. – JAL

+1

Il messaggio della console sembra descrivere esattamente qual è il problema. –

+2

Il messaggio di errore è abbastanza chiaro - la classe che hai passato a 'registerClass: forHeaderFooterViewReuseIdentifier:' non è una sottoclasse di 'UITableViewHeaderFooterView '- controlla dove chiami questo metodo e la definizione della classe che stai passando – Paulw11

risposta

-1

Anch'io ho sofferto di questo problema.

Come ha detto Paulw11, il problema è la chiamata al metodo di classe del registro.

ho seguito un tiro per aggiornare tutorial e ottenuto la vista tavolo di lavoro in questo modo:

ho sostituito

var tableView = tableViewController.tableView 

    tableView.registerClass(UITableViewController.self, forHeaderFooterViewReuseIdentifier: cellIdentifier) 

con:

var refreshControl = UIRefreshControl() 
    refreshControl.addTarget(self, action: Selector("sortArray"), forControlEvents: UIControlEvents.ValueChanged) 
    self.refreshControl = refreshControl 

... 

func sortArray() { 
    ... 
} 

consentendo tirare per aggiornare e permettendo il mio codice correre.

28

Probabilmente la funzione che si desidera utilizzare sia

tableView.registerClass(UITableViewController.self, forCellReuseIdentifier: cellIdentifier) 

invece di

tableView.registerClass(UITableViewController.self, forHeaderFooterViewReuseIdentifier: cellIdentifier) 

Speranza il gioco è fatto ...

+0

Catching the error like SUPERMAN .... ha reso il ragazzo giorno ... :) – Tuhin

Problemi correlati