2013-04-27 52 views
2

在我的應用程序(iPad)中,需要創建一個包含許多列的UITableView。 要做到這一點,我不得不創建一個自定義的UITableViewCell來提供所需的列。UITableView:viewForHeaderInSection - 標題文本?

現在,是時候將標題放在這些列上。在'viewForHeaderInSection'委託我想放置一個標籤,擴大表的寬度。

一切都很順利,背景顏色已經設置好,並且很好地達到了視圖的寬度。

但是當我去使用:

label.text = [NSString stringWithFormat:@" Date  Dist  Litres  Cost($)"]; 

我不明白的文字散開來表示上面的例子。我得到的更像是:

" Date Dist Litres Cost($)" 

如何在標題文本中恢復需要的空格?

+0

你爲什麼不創建4個UILabels並將其放置在其他的答案的建議標題視圖,以便您可以更準確地控制標籤的位置? – Lefteris 2013-04-27 10:52:08

+0

你的問題有點含糊,所以我覺得你應該使用UICollectionView。 – QED 2013-04-27 15:18:23

回答

5

您應該創建一個包含四個UILabel子視圖的標題視圖。

事情是這樣的:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; 
    // 4 * 69 (width of label) + 3 * 8 (distance between labels) = 300 
    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 4, 69, 22)]; 
    label1.text = @"Date"; 
    [headerView addSubview:label1]; 
    UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(87, 4, 69, 22)]; 
    label2.text = @"Dist"; 
    [headerView addSubview:label2]; 
    UILabel *label3 = [[UILabel alloc] initWithFrame:CGRectMake(164, 4, 69, 22)]; 
    label3.text = @"Litres"; 
    [headerView addSubview:label3]; 
    UILabel *label4 = [[UILabel alloc] initWithFrame:CGRectMake(241, 4, 69, 22)]; 
    label4.text = @"Cost($)"; 
    [headerView addSubview:label4]; 
    return headerView; 
} 

調整顏色,字體和框架您的要求。

這比依靠空格字符的寬度要乾淨得多。
如果你使用固定寬度的字體,你的方式將工作,但我會建議反對它。

當您想將您的應用程序本地化爲不同語言時,計算空格的任務將成爲一場噩夢。

1

,如果你在UIView做到這一點,並加上標籤這將是很好的(姑且稱之爲headerView)到它的合適的位置,使所有標籤的排列NSTextAlignmentCenter然後設置標籤標題相應。然後返回headerView

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
2

嗯,我不知道你在做什麼,目的是什麼,確定它看起來很奇特。但只是爲了在objective-c中的字符串中獲得空格,可以簡單地添加「\ t」並且它將增加等於TAB的空格。

label.text = [NSString stringWithFormat:@「Date \ t Dist \ t Liters \ t Cost($)」];

這會增加你的字符串中的空格,但更好的方法是使用不同的頁眉不同的列並設置其標題標題,由

+0

感謝所有.....這真的很有幫助。非常感激。 – Fritzables 2013-04-28 06:44:43

+0

對不起傑西卡,我給你的方法一個嘗試,但可悲的是它沒有在我的情況下工作。我通過爲Matthias建議的每列插入標籤來管理它。 – Fritzables 2013-04-28 07:46:02

+0

@Fritzables很高興聽到你的問題解決 – Jessica 2013-04-28 12:56:59