2013-02-05 40 views
1

我應該在cellForRowAtIndexPath:方法的cell == nil部分中設置cell.titleLabel的字體嗎?或之後?我還以編程方式添加了一些標籤和UIImageUIImage不會更改,但標籤的值會更改。cell.titleLabel的字體設置應該放在cellForRowAtIndexPath:方法中?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *identifier = @"identifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; 
    if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; 

[cell.titleLabel setFont:[UIFont fontWithName: @"Asap-Bold" size: 15.0f]]; 
     [cell.descriptionLabel setFont:[UIFont fontWithName: @"Asap-Regular" size: 10.0f]]; 

    } 

    **// or should it go here?** 

    return cell; 
} 

感謝您的任何幫助。

+0

@Vishal是不正確的呢? http://stackoverflow.com/a/9135341/388458謝謝 – hanumanDev

+0

字體是否根據行的內容而改變?如果沒有,每次訪問單元時重置它似乎都是不必要的。 –

+0

@RichTolley字體始終保持不變。我期望加快桌子的表現,並希望將所有靜態項目移到適當的位置。那會在if(cell == nil){....}之內嗎? – hanumanDev

回答

3

你是正確的在大括號中設置字體,因爲這個代碼應該執行一次。外括號應該是訪問數據源的代碼,例如當你做這樣的 cell.label.text = [self.dataArray objectAtIndex:i];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *identifier = @"identifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; 
    if (cell == nil) { 
    //executed once per cell 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:identifier] autorelease]; 
    [cell.titleLabel setFont:[UIFont fontWithName: @"Asap-Bold" size: 15.0f]]; 
    [cell.descriptionLabel setFont:[UIFont fontWithName: @"Asap-Regular" size: 10.0f]]; 
    } 
//Executed every time 
cell.label.text = [self.dataArray objectAtIndex:i]; 
    return cell; 
} 
1

不便,如果單元格字體是獨立的行號,然後它總是有,如果(細胞==零)裏面去。

相關問題