未设置 CustomTableViewCell 属性(它们为零)

Posted

技术标签:

【中文标题】未设置 CustomTableViewCell 属性(它们为零)【英文标题】:CustomTableViewCell Properties aren't being set (they are nil) 【发布时间】:2015-05-01 07:53:45 【问题描述】:

我有一个customTableViewCell,我正在尝试设置图像和一些文本。单元格创建成功,但属性为nil。我不确定.xib 中是否缺少某些东西,但我就是想不通。网点设置在customViewCell.h,连接在.xib

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

  static NSString *cellIdentifier = @"socialMediaCell";    

  CustomSocialMediaTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

  CustomSocialMediaTableViewCell *tagCell = (CustomSocialMediaTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"socialMediaCell"];

  if (cell == nil) 

      cell = [[CustomSocialMediaTableViewCell alloc] 
        initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

      tagCell = [[CustomSocialMediaTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
  

  NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"socialPosts"];

  UIImage* image = [UIImage imageWithData:imageData];

  cell.socialMediaTextView.text = @"TEXT";

  cell.socialMediaImageView.image = image;

  return cell;

【问题讨论】:

确保您的网点是@Property.. 请更正有问题的代码格式... cellIdentifier = @"socialMediaCell" OR cellIdentifier = @"CustomSocialMediaTableViewCell" ? 您要使用哪个标识符?还是你把它放在那里说你都试过了? 另外你为什么要为单元格创建一个.xib?创建一个 UITableviewCell 类,然后在情节提要中选择 tableview 单元格并将其类更改为CustomSocialMediaTableViewCell。将标签和图像拖放到类 .h 文件中。 【参考方案1】:

你引用了同一个 CustomTableViewCell 两次,然后你给它分配了东西:

static NSString *cellIdentifier = @"socialMediaCell";    

****Declared once here****
CustomSocialMediaTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

****Declared a second time here***
CustomSocialMediaTableViewCell *tagCell = (CustomSocialMediaTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"socialMediaCell"];

使用第一个声明的cell 并删除第二个。

然后你说如果单元格是空的,设置样式你已经这样做了两次。做一次。

if (cell == nil) 

  cell = [[CustomSocialMediaTableViewCell alloc] 
    initWithStyle:UITableViewCellStyleDefault];

然后你可以添加和分配你需要的东西。

我有一种感觉,当您只需在情节提要中选择 TableViewCell 并设置它的类时,您可能已经尝试通过现代方法创建一个 .xib 来以更困难的方式执行此操作。然后你可以 ctrl + 从你的 UILabel 和 UIImage 拖到你的 .h 文件中。

如果您不希望这样做或没有以这种方式构建它,请确保您引用的 UILabel 和 UIImage 已正确连接,并且您已为两者声明 IBOutlet - 就像这样

@property (nonatomic, weak) IBOutlet UILabel * customText; 

【讨论】:

我刚刚声明了两个单独的变量,以显示我尝试过的不同方式,但没有成功。是的,我的 CustomCell 确实有一个单独的 .xib,但无论哪种方式,我仍然对为什么创建单元格但属性为零 @SASmith 感到困惑【参考方案2】:

使用以下代码在if (cell==nil) 内编辑

    if (cell == nil)  //Check cell is nil or not


   NSArray *nib;
   nib = [[NSBundle mainBundle] loadNibNamed:@"CustomSocialMediaTableViewCell"
                                                owner:self options:nil]; //if cell is nil add CustomSocialMediaTableViewCell Xib

   for (id oneObject in nib) if ([oneObject isKindOfClass:[CustomSocialMediaTableViewCell class]])
                cell = (CustomSocialMediaTableViewCell *)oneObject;

    

【讨论】:

以上是关于未设置 CustomTableViewCell 属性(它们为零)的主要内容,如果未能解决你的问题,请参考以下文章

使用 nib 的多个 customTableViewCell

为啥来自 customTableViewCell 的 UiTextField 没有在我的 UiViewController 中使用 UITableView 返回字符串

为啥我们不遵循使用 xib 创建 customTableViewCell 与使用 xib 创建 customView 相同的过程?

Linux中的特殊权限stia

CSS中px和em属性的特点与区别

Linux特殊权限之stia