2014-01-27 106 views
0

我有一個看起來像this的動態TableView自定義動態TableViewCell文本定位

但是,我想更整齊地定位文本,如this

這裏是我目前使用的代碼:我已經把一個標籤到我想要的動態文本是已位於TableViewCell試驗

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier [email protected]"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    [cell.textLabel setFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:17.0f]]; 
    cell.textLabel.text=[[self.responseArray objectAtIndex:indexPath.row]objectForKey:@"name"]; 
    return cell; 
} 

,但我呼籲沒有成功它在我的代碼中。我怎樣才能做到這一點?

回答

2

您應該創建一個自定義單元格子類。這個子類在.h文件中應該有一個@property,這使您的自定義標籤可用。在.m(或XIB)中創建(或連接)標籤到屬性(outlet)。

現在,您可以使用cell.customTextLabel而不是使用cell.textLabel。請記住,要根據您的CellIdentifier註冊自定義單元類。

您還可以在單​​元格.m(或XIB)的標籤上配置字體和大小,因此您不需要在代碼中執行此操作。


你也將要更改爲:

CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

讓編譯器知道類cell是(因此什麼屬性,它)。

+0

感謝您的回覆。我已經添加了一個標籤,並給它類myLabel。在'.h'文件中,我已經把'@property(nonatomic,strong)UILabel * myLabel;'和'.m'中的'myLabel'替換了'textLabel'的每個實例。我哪裏錯了? – Sebastian

+0

類名應以大寫字母開頭。你得到一個編譯器警告說'myLabel是未定義的? – Wain

+0

不,我得到的錯誤是在第6行,並說:'屬性'myLabel'找不到'UITableViewCell *'類型的對象。奇怪的是,第5行也出現了錯誤,但它消失了。 – Sebastian

0

沒有必要創建UITableViewCell的子類。因爲你想只是改變你的文字的來源。 我建議您添加一個UILabel作爲子視圖到你的手機。

cell.textLabel.text = @""; 
UILabel *textLabel = [[UILabel alloc] initWithFrame: CGRectMake(10,10,300,20)]; 
textLabel.text = @"Text here"; 
[cell.contentView addSubview:textLabel]; 

2-3行只,你不需要創建一個子類。

+0

儘管使用子類最好。在你的情況下,你如何有效地重用細胞? – Wain

+0

@不如子類那麼有效,因爲我們不能重用它。但這種方式不需要太多的內存。 UILabel重量輕。所以我想說你是對的,但不同的是不明顯的。 – Zhans

+0

零內存區別。你還有一個單元格和一個標籤。您可以重複使用您的解決方案,例如在標籤上設置自定義標籤。 – Wain