2015-05-21 32 views
8

Po prostu zastanawiam się, jak dodać niestandardowe komórki do tableView w Swift. Oglądałem wiele tutoriali i wszyscy w pewnym momencie mówią, że używają czegoś takiego jak tableView.registerNib, które nie działa dla mnie!Swift - Niemożliwe użycie "registerNib" na mojej tableView, aby dodać niestandardową komórkę

Jest to kod używam w mojej klasie tableViewController:

var nib = UINib(nibName: "ViewExerciceCell", bundle: nil) 
tableView.registerNib(nib, forCellReuseIdentifier: "ExerciceCell") 

Kiedy próbuję budować, mam błąd w drugim wierszu, który mówi:

Cannot invoke 'registerNib' with an argument list of type '(UINib, forCellReuseIdentifier: String)'.

Co może Ja robię ? Wszystkie samouczki i inne odpowiedzi dotyczące komórek niestandardowych używają tego kodu.

góry dzięki

+0

Jak 'tableView' oświadczył? Zauważ, że jeśli 'tableView' jest opcjonalne, nie możesz wywołać metody bezpośrednio, musisz użyć notacji' tableView? .registerNib'. – Sulthan

+0

Moje tableView jest zadeklarowane jako Outlet: '@IBOutlet weak var tableView: UITableView!' –

+0

Nie ma nic złego w tym kodzie. Jedyny problem, jaki mogę sobie wyobrazić, to to, że masz tam literówkę i nie skopiowałeś poprawnie tego błędu. – Sulthan

Odpowiedz

6

Używam następujący kod wewnątrz tableView:cellForRowAtIndexPath funkcję:

var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as UITableViewCell 
if cell == nil { 
    tableView.registerNib(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "CustomCell") 
    cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as UITableViewCell! 
} 

return cell 

Jeśli masz swój własny komórkę w serii ujęć lub .xib pliku, nie zapomnij, aby ustawić Identifier (w w tym przypadku CustomCell) w Inspektorze atrybutów

2

Ok ... Nie wiem, jaki był problem, ale usunięcie odniesienia do pliku mojego cell.xib w moim projekcie i dodanie go ponownie tylko rozwiązało problem. Już wcześniej miałem pewne problemy rozwiązane w ten sposób.

Dziękuję wszystkim za szybkie odpowiedzi!

1

Po pewnym headbangingu zdałem sobie sprawę, mój błąd:

Zamiast „forCellReuseIdentifier” Miałem użyć forCellWithReuseIdentifier. Przy tak wielu rzeczach zmieniających się z Swift tak szybko, ciężko nadążyć za wszystkimi zmianami. Mam nadzieję że to pomoże.

Rozwiązanie że pracował dla mnie:

self.collectionView!.register(UINib(nibName: "CategoryCVCell", bundle: nil), forCellWithReuseIdentifier: "CategoryCVCell") 
+0

LOL samo słyszą prawie 2 godziny i nie ma szczęścia lol –