6

我创建了一个自定义单元格 FeatureCell,该单元格中有 5 个图像,将在主视图中调用,但是当我调用它时,我得到空行。那么请问我的问题在哪里?

我已经用谷歌搜索了自定义单元格,我使用了我必须在下面的代码中使用的方式,但没有任何反应。

这是我的 FeatureCell.h

@interface FeatureCell : UITableViewCell{

  IBOutlet UIImageView *img1;
  IBOutlet UIImageView *img2;
}

@property (nonatomic, retain) UIImageView *img1;
@property (nonatomic, retain) UIImageView *img2;
@end

这是我的 FeatureCell.m

@implementation FeatureCell

@synthesize img,img1,img2,img3,img4;
@end

这是我的视图控制器 .m

- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{

return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

if (section == 0) {
    return [objectCollection count];
}
else{
    return 1;
   }
}    

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

static NSString* cellIdentifier1 = @"FeatureCell";

FeatureCell *cell1 = (FeatureCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1];


if (cell1 == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier1 owner:nil options:nil];

    cell1 = (FeatureCell*)[nib objectAtIndex:0];
}

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                  reuseIdentifier:CellIdentifier];

}


if ([indexPath section] == 0) {

    containerObject = [objectCollection objectAtIndex:indexPath.row];

    [[cell textLabel] setText:containerObject.store];

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

}
    else{

    cell1.img1.image = [UIImage imageNamed:@"shower.png"];
    cell1.img2.image = [UIImage imageNamed:@"parking.png"];

    }
        return cell;
}
4

3 回答 3

13

你需要做这样的事情:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 0) {
        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                              reuseIdentifier:CellIdentifier];
        }

        containerObject = [objectCollection objectAtIndex:indexPath.row];
        [[cell textLabel] setText:containerObject.store];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        return cell;
    } else {
        static NSString* cellIdentifier1 = @"FeatureCell";

        FeatureCell *cell1 = (FeatureCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1];
        if (cell1 == nil) {
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier1 owner:nil options:nil];
            cell1 = (FeatureCell*)[nib objectAtIndex:0];
        }

        cell1.img1.image = [UIImage imageNamed:@"shower.png"];
        cell1.img2.image = [UIImage imageNamed:@"parking.png"];

        return cell1;
    }
}

我可能有if倒退的情况,所以仔细检查一下。

于 2013-07-17T23:41:32.067 回答
0

这个实现:

@implementation FeatureCell
@synthesize img,img1,img2,img3,img4;
@end

结果是一个具有一些访问器方法但没有初始化实例的单元格。您需要实现一种init方法来创建实例或将变量(您定义为出口)连接到关联的 XIB 文件。阅读本指南

我也同意关于如何创建不同单元格实例的结构的评论。它非常杂乱无章,您似乎混淆了参考。您应该将内容拆分为不同的方法,或者至少将用于创建单元格的代码放在if语句中,这样您就不能输入单元格实例名称。

于 2013-07-17T23:41:24.870 回答
0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{ if (indexPath.row == 0) //not indexPath.section...解决了我的问题

{
   static NSString *CellIdentifier = @"MenuHeadingCustomCell";

   MenuHeadingCustomCell *cell =[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (cell ==nil)
   {
       cell = [[MenuHeadingCustomCell alloc]initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:CellIdentifier];
   }

   return cell;
}





else
   {
       static NSString* cellIdentifier1 = @"LevelViewCell";
       LevelViewCell *cell1 =[tableView dequeueReusableCellWithIdentifier:cellIdentifier1];
       if (cell1 ==nil)
       {
           cell1 = [[LevelViewCell alloc]initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:cellIdentifier1];

       // row counts which dictionary entry to load:
         _Dictionary=[_array objectAtIndex:indexPath.row];

       cell1.LevelTitleText.text =[NSString stringWithFormat:@"%@",[_Dictionary objectForKey:@"LevelLabelText"]];
       cell1.LevelSubText.text =[NSString stringWithFormat:@"%@",[_Dictionary objectForKey:@"LevelLabelSubText"]];
       cell1.LevelThumb.image =[UIImage imageNamed:[_Dictionary objectForKey:@"LevelLabelThumb"]];

   }
   return cell1;

}
于 2016-05-19T10:56:29.673 回答