2011-12-04 13 views
8

Zrobiłem niestandardowy UITableViewCell w Konstruktorze interfejsu (Storyboard) i zaimportowałem go do mojego projektu przez #import CustomTableViewCell.h.Niestandardowy UITableViewCell (IB) pokazuje tylko w wybranym stanie

Wszystko działa poprawnie, ale komórka jest załadowana tylko w wybranym stanie.

enter image description here

Chcę komórka być załadowany w każdym rzędzie przez init.

P.S. Połączenia między suwakiem i polem tekstowym działają dobrze. Zrobiłem również wszystkie połączenia IB.

CustomTableViewCell.m

#import "CustomTableViewCell.h" 

@implementation CustomTableViewCell 

@synthesize sliderLabel, slider; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) { 
    // Initialization code 
} 
return self; 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
[super setSelected:selected animated:animated]; 

// Configure the view for the selected state 

} 

- (IBAction)getSliderValuesWithValue:(UISlider *)sender 
{ 
sliderLabel.text = [NSString stringWithFormat:@"%i/100", (int) roundf(sender.value)]; 
} 

@end 

Further Code

- (CustomTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Kriterium"; 

CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 

cell.textLabel.text = [NSString stringWithFormat:@"%@", [listOfItems objectAtIndex:indexPath.row]]; 

return cell; 
} 

PS: Jeśli dodaję niektóre przyciski itp. Programowo w powyższej metodzie, to działa. Ale chcę zaprojektować rzędy w IB. Musi być jakieś rozwiązanie.

+0

Czy możesz umieścić kod dla metody cellForRowAtIndexPath używanej przy wypełnianiu UITableView wierszami? – reddersky

+0

Zaktualizowałem moją odpowiedź. – DAS

+0

Czy zaprojektowałeś tę komórkę w oddzielnym stalówce lub jako prototyp w widoku tabeli w scenorysie? – jrturton

Odpowiedz

16

porządku ... dziwne rzeczy dzieją się tutaj ... ;-) Problemem było to linia:

cell.textLabel.text = [NSString stringWithFormat:@"%@", [listOfItems objectAtIndex:indexPath.row]]; 

Pozostawienie go załatwiło sprawę. Musiałem dodać kolejną UILabel do mojej komórki CustomCell, którą wypełniam tekstem.

WNIOSEK

Wypełnienie standardowego UITableViewCell.textLabel.text wydaje się zastąpienie PrototypeCells.

... zbyt wiele dostosowań boli. ;-)

Dzięki! :)

+0

Masz na myśli moje rozwiązanie lub ogólnie? Jeszcze raz dziękuję, jr! – DAS

+0

Mam na myśli ogólnie - jeśli używasz domyślnego stylu komórki, a następnie dodawaj do niego pod-widoki, to jest prawdopodobnie coś, na co warto zwrócić uwagę. – jrturton

+0

OK, dziękuję. Po prostu potrzebowałem mnóstwa różnych stylów komórek. Łatwiej mi je zwizualizować w IB. :) – DAS

0

Sugerowanie, aby nie iść na IB. Wystarczy określić te parametry, jak i mienia w swojej Init method- initWithStyle (plik CustomTableViewCell.m) zainicjować UISlider z domyślnej własności:

UISlider *tempSlider = [[UISlider alloc] initWithFrame:frame]; 
tempSlider.selected = NO; 
//define other properties as well 
self.slider = tempSlider; 
[self addSubview:self.slider]; 
[tempSlider release]; 

Poza tym można także ustawić styl selekcji komórek sobie równych.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+0

Dziękuję. Ale w zasadzie musi działać jak [to (klik)) (http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1).Każdy używa tej linii, która nie zmienia niczego w moim problemie: 'UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @" PlayerCell "];' – DAS

Powiązane problemy