2012-10-27 70 views
0

我想知道在哪裏輸入自定義代碼來更改UITableViewCell的Label屬性的值。UITableViewCell的自定義代碼

我不知道這是如何加載的,因爲我已經把NSLog放在ViewDidLoad和(id)initWithStyle實例方法中,但是都沒有寫入日誌。

我已經設置了一個NIB和自定義類都鏈接正確,並且該標籤作爲屬性鏈接,不再導致錯誤。但我無法設置文本。

這是自定義單元格如何叫:

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

if (cell == nil) { 

    NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"LeftMenuTableViewCell" owner:nil options:nil]; 

    for (UIView *view in views) { 
     if([view isKindOfClass:[UITableViewCell class]]) 
     { 
      cell = (LeftMenuTableViewCell*)view; 

     } 
    } 
} 

return cell; 
} 

這是對LeftMenuViewCell類的IMP文件的代碼。

-(void)viewDidLoad { 

displayName.text = [self.user objectForKey:@"displayName"]; 

我可以將displayName設置爲一個字符串,這也不會改變。如果我將NSLog添加到自定義單元類的viewDidLoad中,它不會顯示,如未加載,但單元格已加載...?

+0

你想知道如何用數據填充「UITableView」嗎? –

回答

0

比方說,你有自定義的UITableViewCell用的UILabel稱爲testLabel。如果您的NIB和自定義類的正確鏈接比你可以用下面的代碼:

MyTableViewCell.h

@interface MyTableViewCell : UITableViewCell 

@property (nonatomic, assign) IBOutlet UILabel *testLabel; 

@end 

的cellForRowAtIndexPath在你的UITableViewController或UIViewController中:

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

     if (cell == nil) { 
      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil]; 
     cell = [topLevelObjects objectAtIndex:0];  
     } 

     [cell.testLabel.text = [_dataSource objectAtIndex:[indexPath row]]]; 

     return cell; 
} 

希望它能幫助:)

1

沒有代碼細節,我只能給出一個模糊的答案。

您的自定義單元格需要子類UITableViewCell,並且在數據源方法tableView:cellForRowAtIndexPath:時需要爲此表提供此自定義子類。

我建議對細胞如何添加/與UITableView小號用來讀了起來: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW1

+0

我已將其他信息添加到問題中,包括代碼示例 – StuartM

0

例如

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


RouteCell *routeCell = [self.tableView dequeueReusableCellWithIdentifier:routeIdentifier]; 

if (routeCell == nil) { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"RouteCell" owner:nil options:nil]; 
    routeCell = [nib objectAtIndex:0]; 
} 

routeCell.travelTime.text = @"Here you are setting text to your label"; 

return routeCell; 
+0

謝謝,我在代碼中添加了代碼示例。我知道這可以在調用單元本身時設置,但我希望代碼位於實際自定義單元類的imp文件中,因爲我將使用多個自定義單元格 – StuartM

+1

自定義單元格沒有viewDidLoad方法,它只適用於UIViewController。你應該在cellForRowAtIndexPath委託方法中更新單元格的出口。 – NeverBe