2016-02-25 66 views
0

我需要創建一個顯示四個UILabel實例的自定義UITableViewCell故事板中自定義UITableViewCells的問題

在這個自定義單元格的實施,我有以下初始化代碼:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // configure labels 
     self.positionLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 10, 300, 30)]; 
     self.positionLabel.textColor = [UIColor whiteColor]; 
     self.positionLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0f]; 

     [self addSubview:self.positionLabel]; 
    } 
    return self; 
} 

在我cellForRowAtIndexPath方法,我有以下代碼

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

    CustomUICell *cell = [tableView dequeueReusableCellWithIdentifier:@"CELL"]; 

    if (cell == nil) { 
     cell = [[CustomUICell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CELL"]; 

     cell.positionLabel.text = @"Test"; 

    } 
    [cell setBackgroundColor:[UIColor clearColor]]; 

    return cell; 
} 

然而,而不是創建與initWithFrame:CGRectMake(5, 10, 300, 30)];細胞,我寧願在我的故事板中做到這一點。如果我將一個標籤粘貼在我的故事板中的細胞,並將其連接到下面相應的屬性:通過寫作

@property (nonatomic) IBOutlet UILabel *positionLabel; 

,並創建我的標籤:

self.positionLabel = [[UILabel alloc] init]; 

我希望看到一個標籤在我的單元格中運行我的應用程序時,但這並未發生。有沒有人有任何洞察到我失蹤/不理解?謝謝!

回答

2

首先,使用dequeueReusableCellWithIdentifier:forIndexPath:而不是dequeueReusableCellWithIdentifier:。在這種情況下,您不需要if子句。

關於您的問題:當您在故事板中添加單元格時,不需要實施initWithStyle:reuseIdentifier:。事實上,如果你這樣做,代碼路徑就會被執行,並且會覆蓋你在故事板中做的所有事情。

+0

這很有道理@dasdom,謝謝。我把事情放在'initWithStyle:reuseIdentifier'中的原因是,當我將標籤添加到故事板時,它根本不會顯示出來。 – narner

+1

使用'dequeueReusableCellWithIdentifier:forIndexPath:'並確保使用相同的單元標識符。 – dasdom

+0

@dasom得到它的工作,謝謝! – narner