2011-08-29 49 views
0

如何使用可更改的標籤在Interface Builder中製作可重複使用的TableViewCell?可重複使用Interface Builder中的TableViewCell與可變標籤?

這甚至可能嗎?從我所瞭解的蘋果最近在界面生成器中給自定義的TableViewCell一些愛,​​所以這應該是可能的?

Ps。我知道在IB中有很多關於TableViewCell的問題,但我找不到任何使標籤生效的人。

回答

1

您可以更改正在重用的單元格中的任何內容。要自定義您在IB中創建的標籤,您應該在自己的IB中設置其標籤&使用相同的標籤獲取標籤。

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

    if(cell == nil) 
    { 
     cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 
    } 


    // Configure the cell. 
    //Do anything here with the labels. Even add or remove them. 
    (UILabel*) label1 = (UILabel*)[cell viewWithTag:1]; 
    return cell; 
} 

HTH,

阿克沙伊

+0

不,我的意思是如果我在IB中創建自定義單元格..我如何得到我放在那裏的標籤的引用。 – DiscSeven

+0

編輯我的答案。 – Akshay

+0

太棒了!正是我想要做的。謝謝! – DiscSeven

0

我用來做什麼的,他的方式爲接受的答案相同,但像我使用「去」的帕斯卡爾使用標籤我一直認爲。感覺髒。但也許這只是我,標籤工作得很好。

雖然有另一種方法。子類UITableViewCell,創建一個IBOutlet屬性,連接IB,並引用cellForRowAtIndexPath:代碼中的屬性。像這樣:

interface MyCustomCell : UITableViewCell 

@property (nonatomic, weak) IBOutlet UILabel *myAwesomeLabel; 

@end 

不要忘了在IB中將單元的類設置爲MyCustomCell。

enter image description here

之後,你可以在IB連接你的財產直接像這樣

enter image description here

而在你的表視圖數據源,現在你可以訪問此屬性

#import "MyCustomCell.h" 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCell"]; 

    if (cell) { 
     cell.myAwesomeLabel.text = @"Hello, World!"; 
    } 

    return cell; 

} 

使用標籤很容易出錯,如果你使用很多標籤,可能會很快變成一團糟。

相關問題