2010-10-15 9 views
5

Próbuję utworzyć niestandardowy widok tabeli za pomocą komórki, którą zbudowałem w IB. Otrzymuję dziwny błąd:Niestandardowy UITableViewCell błąd

<BroadcastViewController 0x4b4f5f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key postText. 

Wszystko jest prawidłowo podłączone do kontrolera komórki w IB. Nie bardzo wiem, dlaczego tak się dzieje.

To właśnie moja cellForRowAtIndexPath wygląda następująco:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

//Get the folder object of interest 
Broadcast *messageAtIndex = [self.messages objectAtIndex:indexPath.row] ; 

static NSString *CellIdentifier = @"BroadcastTableViewCell"; 
static NSString *CellNib = @"BroadcastTableViewCell"; 

BroadcastTableViewCell *cell = (BroadcastTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    //ERRORING ON THIS LINE... 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil]; 
    cell = (BroadcastTableViewCell *)[nib objectAtIndex:0]; 
} 


cell.postText.text = messageAtIndex.replyText; 
cell.authorName.text = messageAtIndex.postCreatorFirstName; 
cell.postDate.text = messageAtIndex.creationDate; 

return cell; 

} 

Każdy widział ten rodzaj błędu wcześniej? Daj mi znać, jeśli potrzebujesz więcej informacji ...

+0

Potrzebujesz pełnego kodu dla komórki funkcjiForRowAtIndexPath – SegFault

+0

Został zaktualizowany. – gabaum10

+0

Wygląda na to, że próbujesz wstawić wartość dla "postText" w coś, co nie jest NSDictionary? :) – willcodejavaforfood

Odpowiedz

5

Co jest naprawdę dziwne jest to, że twierdzi, że nie jest to klasa BroadcastViewController KVC zgodny postText.

O ile widzę, postText jest etykietą w komórce, więc IBOutlet dla tego powinien być w klasie BroadcastTableViewCell. Sprawdź więc, gdzie powiązałeś etykietę postText w IB. Możliwe też, że masz IBOutlet w kontrolerze widoku dla tej etykiety, usunąłeś go, ale zapomniałeś usunąć link w IB. W każdym razie, gdzieś jest twój problem. Fakt, że masz błąd na tej linii, polega na tym, że jest tam załadowany twój NIB, nie ma to nic wspólnego z samą komórką ani z właścicielem.

+0

W porządku, sprawdziłem i dwukrotnie sprawdziłem połączenia IB.To jest poprawnie podłączone w klasie BroadcastTableViewCell.Nie ma żadnych stałych połączeń z żadnym innym kontrolerem widoku.To naprawdę nie ma żadnego sensu ... – gabaum10

+0

Masz to. To było coś w stalówce. Dzięki :) – gabaum10

1

Może mieć coś wspólnego z dequeueReusableCellWithIdentifier, zwracając UITableViewCell *.

ja normalnie to zrobić:

UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier... 
CustomCell* acell = (CustomCell*)cell; 

Ustawia właściciela do zera.

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:nil options:nil]; 
+0

Ok Widzę, że rzucanie to byłby dobry pomysł, ale to nadal nie pomaga w początkowym obciążeniu, gdy pierwsza komórka jest zerowa. Potrzebujesz czegoś do obsłużenia: "if (komórka == zero)" – gabaum10

+0

Po obejrzeniu tego, to jest dokładnie to, co teraz robię, tylko dłuższy sposób umieszczenia tego ... – gabaum10

+0

NSArray * nib = [[NSBundle mainBundle] loadNibNamed: Właściciel CellNib: nil options: nil]; Ustaw właściciela na zero. –

1

Ok to wymyśliłem. Połączenia w IB były rzeczywiście nieprawidłowe. Miałem je połączone z właścicielem pliku, w przeciwieństwie do rzeczywistych obiektów. Dam to też Stelianowi, ponieważ polecił mi sprawdzić stalówkę. Dzięki za pomoc!

Powiązane problemy