1

尝试设置和访问 nib tableview 单元格。基本上与使用原型 tableviewcell 创建 uitableview 并设置其标识符并通过它访问它相同

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Fill table in with data
    static NSString *cellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }

问题是您将如何作为笔尖做到这一点。由于 nib IB 没有原型选项?

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

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"];

        MPMediaItem *song = [self.songsList objectAtIndex:indexPath.row];
        NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];
        NSString *durationLabel = [song valueForProperty: MPMediaItemPropertyGenre];
        cell.textLabel.text = songTitle;
        cell.detailTextLabel.text = durationLabel;


    return cell;
}

-(void)viewDidLoad {
      [self.tableView registerNib:[UINib nibWithNibName:@"MusicViewController" bundle:nil] forCellReuseIdentifier:@"Cell"];
}
4

2 回答 2

1

使用 nib 文件创建自定义 tableviewCell。创建后,您将拥有三个文件 YourCustomCell.h YourCustomCell.m 和 YourCustomCell.xib

在 YourCustomCell.h 中添加 IBOutlet,并在 YourCustomCell.xib 中使用各自的标签连接它们。

现在在 cellForRowAtIndexPath: 添加以下内容:

    YourCustomCell *yourCustomCell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"];

    yourCustomCell.labelInCustomCell.textLabel.text = songTitle;
    yourCustomCell.detailsLabelInCustomCell.textLabel.text = durationLabel;

    return yourCustomCell;

希望这对您有所帮助。

于 2013-08-27T22:32:59.137 回答
0

您在 xib 文件中创建单元格,然后在代码中(可能在 viewDidLoad 中)使用 registerNib:forCellReuseIdentifier: 注册 nib。在 cellForRowAtIndexPath 中,您只需将具有与您传递给 register 方法的标识符相同的单元格出列。不需要放入 if (cell == nil) 子句,因为它永远不会是 nil。

于 2013-08-27T21:13:05.127 回答