如何在 UITableViewCell 中使用预定义视图(笔尖)?

Posted

技术标签:

【中文标题】如何在 UITableViewCell 中使用预定义视图(笔尖)?【英文标题】:How to use a predefined view (nib) in a UITableViewCell? 【发布时间】:2015-02-19 13:42:34 【问题描述】:

我的列表由带有图像和一些文本字段的卡片视图组成,所有这些都具有复杂的布局。此卡将在详细视图中重复使用,因此将其包含在 UITableViewCell 布局中然后调用 UITableView.registerNib() 似乎对我不起作用。我想知道最简洁的方法来重用我在 NIB 文件中创建的视图作为列表项和我的详细信息屏幕的一部分,同时在 NIB 中保留尽可能多的视图逻辑,例如约束和样式-文件。

【问题讨论】:

“不起作用”是什么意思?编译器错误?运行时异常?结果错误? – 你的代码在哪里? 它确实有效,但感觉不太对,我认为必须有更好的方法。不过,我对马特的回答很满意,很简单。 【参考方案1】:

我想知道以最简洁的方式重用我在 NIB 文件中创建的视图作为列表项和详细信息屏幕的一部分

做你已经在做的事情:使用一个只包含一个视图的 nib(一个 .xib 文件),即设计的 UITableViewCell,并将该 nib 注册到表格视图 - 正是这样你说“似乎不适合你”。它确实工作。所以现在你所有的表格行都包含这个表格视图单元格的副本。

但有诀窍。当你想在其他地方显示视图时,手动加载 nib,拉出视图(UITableViewCell),拉出它的contentView,并将其作为子视图添加到你的界面。

// substitute correct name of xib file here
let arr = UINib(nibName: "MyTableViewCell", bundle: nil).instantiateWithOwner(
    nil, options: nil)
let tvc = arr[0] as! UITableViewCell
let v = tvc.contentView // now it's a normal view! customize as needed
v.frame.origin = CGPointMake(100,100) // or whatever
self.view.addSubview(v) // and plop it into the interface! voilà!

【讨论】:

感谢样品!

以上是关于如何在 UITableViewCell 中使用预定义视图(笔尖)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableViewCell 中使用字典显示 NSArray 对象

如何在 UITableViewCell 中使用自定义 UIButton?

如何在 UITableViewCell 上使用自定义初始化程序?

使用 lineHeightMultiple 控制行间行距时,如何在 UITableViewCell 中垂直对齐我的 UILabel?

如何在 uitableviewcell swift 中使用多个 prepareforsegue 传递数据

如何在 UITableViewCell 中释放 UIImageView?