来自NSString的UITableViewCell Nib

时间:2016-04-28 10:32:03

标签: ios objective-c uitableview nsarray custom-cell

我正在尝试根据存储在数组中的信息更改将使用的自定义单元格。我已经尝试了所有的东西,但似乎无法让它工作没有错误。代码似乎不接受单元格笔尖的字符串输入。有没有其他方法可以做到这一点?将附上我的代码。

感谢。

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

{
    if([[Tutortrackinbud[indexPath.row] valueForKey:@"reply"]  isEqual: @"N"])
    {
        nib = @"ReviewCell1";
    }
    else{
          nib = @"ReviewCell2";
    }
    static NSString *simpleTableIdentifier = nib;



    ReviewCell1TableViewCell *cell = (ReviewCell1TableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil)

    {

        NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:nib owner:self options:nil];

        cell = [nibArray objectAtIndex:0];

    }
    if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"]  isEqual: @"1"]){
        NSLog(@"1");
        cell.star1.image = [UIImage imageNamed:@"star.png"];
        cell.star2.image = [UIImage imageNamed:@"greystar.png"];
        cell.star3.image = [UIImage imageNamed:@"greystar.png"];
        cell.star4.image = [UIImage imageNamed:@"greystar.png"];
        cell.star5.image = [UIImage imageNamed:@"greystar.png"];
        cell.star6.image = [UIImage imageNamed:@"greystar.png"];

    }
    else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"]  isEqual: @"2"]){
        NSLog(@"2");
        cell.star1.image = [UIImage imageNamed:@"star.png"];
        cell.star2.image = [UIImage imageNamed:@"star.png"];
        cell.star3.image = [UIImage imageNamed:@"greystar.png"];
        cell.star4.image = [UIImage imageNamed:@"greystar.png"];
        cell.star5.image = [UIImage imageNamed:@"greystar.png"];
        cell.star6.image = [UIImage imageNamed:@"greystar.png"];

    }
    else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"]  isEqual: @"3"]){
        NSLog(@"3");
        cell.star1.image = [UIImage imageNamed:@"star.png"];
        cell.star2.image = [UIImage imageNamed:@"star.png"];
        cell.star3.image = [UIImage imageNamed:@"star.png"];
        cell.star4.image = [UIImage imageNamed:@"greystar.png"];
        cell.star5.image = [UIImage imageNamed:@"greystar.png"];
        cell.star6.image = [UIImage imageNamed:@"greystar.png"];
    }
    else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"]  isEqual: @"4"]){
        NSLog(@"4");
        cell.star1.image = [UIImage imageNamed:@"star.png"];
        cell.star2.image = [UIImage imageNamed:@"star.png"];
        cell.star3.image = [UIImage imageNamed:@"star.png"];
        cell.star4.image = [UIImage imageNamed:@"star.png"];
        cell.star5.image = [UIImage imageNamed:@"greystar.png"];
        cell.star6.image = [UIImage imageNamed:@"greystar.png"];
    }
    else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"]  isEqual: @"5"]){
        NSLog(@"5");
        cell.star1.image = [UIImage imageNamed:@"star.png"];
        cell.star2.image = [UIImage imageNamed:@"star.png"];
        cell.star3.image = [UIImage imageNamed:@"star.png"];
        cell.star4.image = [UIImage imageNamed:@"star.png"];
        cell.star5.image = [UIImage imageNamed:@"star.png"];
        cell.star6.image = [UIImage imageNamed:@"greystar.png"];

    }
    else if ([[Tutortrackinbud[indexPath.row] valueForKey:@"stars"]  isEqual: @"6"]){
        NSLog(@"6");
        cell.star1.image = [UIImage imageNamed:@"star.png"];
        cell.star2.image = [UIImage imageNamed:@"star.png"];
        cell.star3.image = [UIImage imageNamed:@"star.png"];
        cell.star4.image = [UIImage imageNamed:@"star.png"];
        cell.star5.image = [UIImage imageNamed:@"star.png"];
        cell.star6.image = [UIImage imageNamed:@"star.png"];

    }


    cell.reviewdate.text = [Tutortrackinbud[indexPath.row] valueForKey:@"date"];
    cell.reviewtext.text = [NSMutableString stringWithFormat:@"%@ -%@",[Tutortrackinbud[indexPath.row] valueForKey:@"desc"],[Tutortrackinbud[indexPath.row] valueForKey:@"username"]];

    //cell.tutortext.text = [NSMutableString stringWithFormat:@"%@ -%@",[Tutortrackinbud[indexPath.row] valueForKey:@"desc"],[Tutortrackinbud[indexPath.row] valueForKey:@"username"]];







    cell.tutortext.text = @"this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test this is test";






    return cell;

}

3 个答案:

答案 0 :(得分:2)

您必须在viewDidLoad

中注册您的nib文件

示例代码:

UINib *cellNib = [UINib nibWithNibName:@"MyCustomCell" bundle:nil];
[self.tableView registerNib:self.cellNib forCellReuseIdentifier:@"CustomCell"];

然后正常使用dequeueReusableCellWithIdentifier。您可以使用不同的标识符注册多个nib个文件,并使用其唯一标识符在cellForRowAtIndexPath中将它们出列。

答案 1 :(得分:2)

在我的项目中,我经常使用类方法做基本单元格:

+ (NSString *)reuseIdentifier {
    return NSStringFromClass([self class]);
}

+ (UINib *)nibName {
    return [UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil];
}

所有其他单元格都从它中继承并在需要的地方使用它:

 [self.tableView registerNib:[UINib nibWithNibName:[FeedCell nibName] bundle:nil] forCellReuseIdentifier:[FeedCell reuseIdentifier]];

希望有所帮助)

答案 2 :(得分:1)

我建议,您需要创建单个xib文件的多个xib文件,然后从NSArray获取对象。

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

    static NSString *simpleTableIdentifier = nib;

    ReviewCell1TableViewCell *cell = (ReviewCell1TableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil){
        NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:nib owner:self options:nil];

         if([[Tutortrackinbud[indexPath.row] valueForKey:@"reply"]  isEqual: @"N"]){
               cell = [nibArray objectAtIndex:0];
         }else{
              cell = [nibArray objectAtIndex:1];
         }
    }


    return cell;
}