我遇到问题UITableViewCell outside of UITableView但没有正确答案,除了'这不是一个好主意'。
我想在tableView外部加载单元格的contentView(示例情况 - 当用户单击单元格导航到新表视图时,该单元格作为headerView的一部分)。
主题中提出的决议我提供的链接是:
我所做的是从其笔尖加载单元格,设置,然后 将单元格的contentView添加到我的新推送视图中。这实现了 大致相同的效果。
我尝试通过MyUITableViewCell()
,MyUITableViewCell(style:, reuseIdentifier: nil)
加载单元格,但每当我尝试调用单元格内的任何对象(例如按钮)时,我都会收到该对象为nil
的崩溃,所以这意味着没有从笔尖加载单元格。
我无法通过MyUITableViewCell(nib: nib, bundle: nil)
初始化单元格,因为它没有这样的初始化程序。
那么如何在我的任何其他视图中加载单元格的内容?我怎样才能“设置”?
答案 0 :(得分:4)
要在不使用表格视图的情况下直接从笔尖加载单元格,您需要从主程序包加载它。
目标-C:
CustomClass *cell = (CustomClass *)[[[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil] firstObject]
夫特:
let cell = NSBundle.mainBundle().loadNibNamed("nibName", owner: self, options: nil).first as! CustomClass
加载后,您仍然需要进行设置并设置单元格的框架并将其添加到superview。然后,您可以像使用任何其他视图一样使用此视图。
init方法不起作用的原因是因为视图永远不会从nib初始化任何IBOutlet,因此所有单元的出口属性都是零。