由于IBOutlets为零,因此未在Custom单元类中调用awakeFromNib

时间:2016-01-08 06:56:36

标签: ios objective-c cocoa-touch

我是iOS编程的新手。我创建了一个customcell类,并且没有调用awakefromnib方法,因为这样IBOutlets就是nil! 这让我抓狂!请帮忙! 我使用的故事板不是xibs。

4 个答案:

答案 0 :(得分:3)

我最近遇到了这个问题,这是由于错误地注册了单元所导致的。要从笔尖加载UITableViewCell,您需要像这样注册:

override func viewDidLoad() {
    super.viewDidLoad()

    // .....

    let cellNib = UINib(nibName: "YourCellNibName", bundle: nil)
    tableView.register(cellNib, forCellReuseIdentifier: "YourCellIdentifier")
}

答案 1 :(得分:3)

我也遇到了这个问题,问题是我打电话给了

self.collectionView.register(CollectionCell.self, forCellWithReuseIdentifier: "CollectionCell")

即使我实际上已经在情节提要中添加了收藏视图单元格。如果是这种情况,那么就不需要注册该类,并且在使单元出队时会导致所有IBOutlet为零

答案 2 :(得分:0)

如果您希望从xib实例化单元格,那么您的tableView:cellForRowAtIndexPath:方法中的实现错误。

你需要做一些事情:

首先:

确保单元格的Identifier在xib中设置为一个很好的唯一值。 (n.b. cell不是一个很好的唯一名称,仅适用于此示例)

enter image description here

第二

tableView:cellForRowAtIndexPath:方法中,请确保使用此重用标识符

创建单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

  // configure cell

  return cell;
}

答案 3 :(得分:0)

确保为UICollectionViewCell的自定义类具有适当的模块(而不是没有)。