Nib原型uitableviewcell cellForRowAtIndexPath:

时间:2013-08-27 21:09:44

标签: ios objective-c xcode uitableview

尝试设置和访问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];
    }

问题是你如何做这个笔尖。由于笔尖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"];
}

2 个答案:

答案 0 :(得分: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;

希望这对你有所帮助。

答案 1 :(得分:0)

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