2013-10-30 53 views
8

我想添加一個字幕到我的tableview單元格,但它們不顯示。 錯誤在哪裏?IOS7上的Tableview字幕

是行 [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle] 最新,也與iOS 7?

問候

弗蘭克


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = @"TestA"; 
    cell.detailTextLabel.text = @"TestB"; 

    return cell; 
} 
+0

這看起來正確註冊您的細胞類我。你使用Storyboard/Xib文件嗎?確保你把細胞原型放在那裏。 –

+0

你是說這段代碼只會顯示主標題,而不是每行的標題?這是全部代碼還是你使用原型單元? – rmaddy

回答

5

此代碼:

if (!cell) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
} 

永遠不會執行,因爲dequeueReusableCellWithIdentifier: forIndexPath:保證分配一個新的細胞。

不幸的是,registerClass:forCellReuseIdentifier:不允許指定UITableViewCellStyle

dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath更改爲簡單dequeueReusableCellWithIdentifier:CellIdentifier。這種方法不保證將返回一個單元格。*當它不是時,你的代碼將創建一個你想要的樣式的新單元格。


* - (它將如果您使用的是故事板,爲rdelmar指出,但這裏並非如此。)

+1

「此方法不保證將返回一個單元格」 - 不一定是正確的。如果該單元格是在故事板中製作的,那麼該方法也可以保證返回一個單元格。 – rdelmar

+0

如果你已經用tableView註冊了一個類或者nib,它會自動返回它的一個實例,並且cell不會是零。 – estobbart

0

我有一個類似的問題,在互聯網上沒有解決方案爲我。原來我是個白癡。我會發布我的解決方案,只是讓別人體驗到類似的情況。

我假設你正在使用故事板,已經創建了一個原型和樣式設置爲字幕

在你的故事板文檔大綱,請確保您選擇protoptype細胞,並選擇小標題。見圖片:

enter image description here


現在確保標籤字體顏色是自然的你的背景下,我們看到!

0

簡單的子類的UITableViewCell,並覆蓋

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

的第一行是

[super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier]; 

並與表視圖

[tableView registerClass:[YourCellSubclass class] forCellReuseIdentifier:@"YourCellID"];
1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath { 
UITableViewCell *cell = nil; 
cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
if (cell == nil) 
{ 
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 
} 
cell.textLabel.text = @"Title1"; 

cell.detailTextLabel.text = @"Subtitle 1"; 

return cell; 
} 
+0

答案應包括解決方案的說明。 – Enkode

+0

爲單元格賦予一個來自Inspector視圖的標識符,並將其寫入** cellForRowAtIndexPath **,其中** cel.detailTextLabel.text **是副標題。 – Jamil