iOS/Swift:UITableViewCell 中的两个嵌入式视图在运行时未出现
Posted
技术标签:
【中文标题】iOS/Swift:UITableViewCell 中的两个嵌入式视图在运行时未出现【英文标题】:iOS/Swift: Two embedded views in UITableViewCell not appearing when run 【发布时间】:2017-06-29 19:44:20 【问题描述】:我正在尝试将 UIStackView
嵌入到 UITableViewCell
中。 UIStackView
内部应该有两个项目:UICollectionView
和另一个 UITableView
。
我正在采取的方法是将所有内容嵌入到根UIViewController
中包含的UIView
中。
我从父 UITableView
创建了一个 dataSource
出口,并使根 UIViewController
符合 UITableViewDataSource
。之后,我实现了标准的UITableView
函数,并对UITableViewCell
中嵌入的UICollectionView
做了类似的事情。这是根UIViewController
和自定义UITableViewCell
的代码:
class OverviewController: UIViewController, UITableViewDataSource
override func viewDidLoad()
super.viewDidLoad()
func numberOfSections(in tableView: UITableView) -> Int
return 1
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 1
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
return "AppTitle"
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "appCell", for: indexPath) as! AppCell
return cell
class AppCell: UITableViewCell, UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 3
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "featureCell", for: indexPath) as! AppCollectionCell
return cell
当我运行它时,我只是得到一个空的表格视图:
我做错了什么?
【问题讨论】:
为您的所有视图添加彩色背景(红色、蓝色、紫色等)。因此,您将能够看到哪些是真正出现的,哪些不是。 还要检查你的约束。并将print(/* something */)
方法添加到numberOfItemsInSection
中,以检查它们是否被调用。
看起来UICollectionViewCell
没有出现,UICollectionView
的cellForItemAt
也没有被调用
您是否为所有集合视图和表格视图正确设置了dataSource
和delegate
?
对于UICollectionView
,是否要为UIViewController
创建一个delegate
出口?
【参考方案1】:
我为你做了一个小项目:https://github.com/mvdizel/q44833725
-
使用与项目中相同的数据源引用
小心实现数据源方法
你的top table view
有数据源——你的视图控制器。
另一个表格视图(在顶部表格视图单元格内)和集合视图都有数据源 - 您的单元格。
【讨论】:
当我从UICollectionView
到父UITableView
建立一个data source
出口时,我收到运行时错误unrecognized selector sent to instance
没关系,我的问题是 reuseIdentifier
的 UITableViewCell
和 UICollectionViewCell
混淆了。以上是关于iOS/Swift:UITableViewCell 中的两个嵌入式视图在运行时未出现的主要内容,如果未能解决你的问题,请参考以下文章
iOS:Swift 中 UITableViewCell 的垃圾桶可以删除按钮
iOS/Swift:UITableViewCell 中的两个嵌入式视图在运行时未出现
iOS Swift - 嵌入在 UITableViewCell 中的 AVPlayer
iOS Swift - UITableViewCell 自定义子类不显示内容