0

我想知道在哪里输入自定义代码来更改 UITableViewCell 的 Label 属性的值。

我不确定这是如何加载的,因为我在 ViewDidLoad 和 (id)initWithStyle 实例方法中放置了一个 NSLog,但都没有写入日志。

我已经设置了一个 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 中,它不会显示,就像它没有加载一样,但单元格已加载......?

4

3 回答 3

1

没有代码细节,我只能给出一个模糊的答案。

您的自定义单元格将需要子类UITableViewCell化,并且您需要为您的表格提供此自定义子类时的数据源方法tableView:cellForRowAtIndexPath:

我建议阅读如何在UITableViews 中添加/使用单元格:http: //developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc /uid/TP40007451-CH7-SW1

于 2012-10-27T22:35:28.057 回答
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;
于 2012-10-27T22:37:17.360 回答
0

假设您有一个名为 testLabel 的带有 UILabel 的自定义 UITableViewCell。如果您的 NIB 和自定义类正确链接,则可以使用以下代码:

MyTableViewCell.h

@interface MyTableViewCell : UITableViewCell

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

@end

UITableViewController 或 UIViewController 中的 cellForRowAtIndexPath:

- (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;
}

希望能帮助到你 :)

于 2012-10-28T16:14:21.830 回答