2011-03-18 30 views
3

根據this question(以及許多Google搜索結果),當我們處於表格視圖中,並且我們將單元格設置爲UITableViewCellStyleSubtitle時,我們不得不調整文本在單元格標籤內部位於左側。解決方法:將textAlignment設置爲UITableViewCellStyleSubtitle的中心

但是我想行的一個(其實就是行)我表視圖的對齊中心......顯然,這是行不通的:

cell.textLabel.textAlignment = UITextAlignmentCenter; 

所以我一直在想什麼,我應該做,而不是...我不知道如何幹淨地做到這一點。我能想到的最好辦法是改變這個特定的單元格,以便單元格的樣式爲UITableViewCellStyleDefault,但我不認爲單元格屬性是可更改的。我能想到的另一種方法是對UITableViewCell類進行子類化,但對於一個表視圖單元格來說,這看起來有點矯枉過正。你認爲我應該怎麼做才能讓最後一排對齊中心?

編輯:對於那些誰感興趣的答案:

static NSString *CellIdentifier = @"Cell"; 
static NSString *CellIdentifierDefault = @"CellDefault"; 

UITableViewCell *cell; // = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (indexPath.row >= [data count]) 
     cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifierDefault]; 
    else 
     cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil && indexPath.row < [data count]) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    else if(cell == nil && indexPath.row >= [data count]) { 
     //Use default style for the last cell. 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierDefault] autorelease]; 
    } 
+0

我想你應該只是最後一個單元格'UITableViewCellStyleDefault'。它比上面提到的任何事情都容易得多。 – Robin 2011-03-18 04:49:26

+0

但是我需要字幕......如果我使用默認樣式,如何顯示text.detailTextLabel? – 2011-03-18 04:54:04

+0

你必須只爲最後一行而不是任何其他行(如你在你的問題中提問) – Robin 2011-03-18 04:59:09

回答

2

@the_great_monkey:

您可以更改爲cellIdentifier您希望這個中心對齊的單元格。

對於其他的細胞,你應該保持一個共同的cellIdentifier

然後,當你這樣做

cell.textLabel.textAlignment = UITextAlignmentCenter; 
cell.detailTextLabel.textAlignment = UITextAlignmentCenter; 

然後簡單的,你需要檢查是否cellIdentifier是一個需要中心對齊的電池?

如果是,再申請,

cell.textLabel.textAlignment = UITextAlignmentCenter;cell.detailTextLabel.textAlignment = UITextAlignmentCenter;該小區。

希望這可以幫助你。

+0

如何檢查單元格的cellIdentifier?我試過如果(cell.cellIdentifier == cellSubtitle)但它不工作... – 2011-03-18 09:34:26

+0

沒關係。得到它了!謝謝! – 2011-03-18 09:42:58

+0

@the_great_monkey:不客氣。對不起沒有回覆你的第一個評論,因爲沒有在線提供。但我很高興它幫助你! :-) – 2011-03-18 09:55:57

0

可以很容易地從一個的.xib,它可以讓你安排的單元格的子視圖,你喜歡的任何方式負荷的小區中。不幸的是,UITableViewCell的textLabel和detailTextLabel屬性不是IBOutlets,所以你不能連接你想要在IB中使用這些屬性的標籤。處理這種

的方法之一是這些意見網點連接在你的控制器代替,並使用它們,當你設置在-tableView細胞:的cellForRowAtIndexPath :.如果您以後不需要更改單元格的內容,那很好。在這種情況下,你可以創建一個包含一個UITableViewCell筆尖,設置文件擁有者的類型控制器匹配,並設置單元格的子視圖,只要你喜歡把它們連起來文件的所有者。有關更多信息,請參閱Loading Custom TableView Cells from Nib Files

另一種方式去是創建具有文本標籤和細節標籤網點的UITableViewCell子類。然後像上面那樣做,但使用你的子類而不是UITableViewCell。一旦你創建了這個子類,你可以在不同的.xibs中使用它,如果你在某個時候需要不同的佈局。創建子類所需的工作很少,並且它變成了一個有用且可重用的工具。

0
cell.textLabel.textAlignment=UITextBorderStyleLine; 
相關問題