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 没有出现,UICollectionViewcellForItemAt 也没有被调用 您是否为所有集合视图和表格视图正确设置了dataSourcedelegate 对于UICollectionView,是否要为UIViewController 创建一个delegate 出口? 【参考方案1】:

我为你做了一个小项目:https://github.com/mvdizel/q44833725

    使用与项目中相同的数据源引用 小心实现数据源方法

你的top table view 有数据源——你的视图控制器。 另一个表格视图(在顶部表格视图单元格内)和集合视图都有数据源 - 您的单元格。

【讨论】:

当我从UICollectionView 到父UITableView 建立一个data source 出口时,我收到运行时错误unrecognized selector sent to instance 没关系,我的问题是 reuseIdentifierUITableViewCellUICollectionViewCell 混淆了。

以上是关于iOS/Swift:UITableViewCell 中的两个嵌入式视图在运行时未出现的主要内容,如果未能解决你的问题,请参考以下文章

iOS:Swift 中 UITableViewCell 的垃圾桶可以删除按钮

iOS/Swift:UITableViewCell 中的两个嵌入式视图在运行时未出现

iOS Swift - 嵌入在 UITableViewCell 中的 AVPlayer

iOS Swift - UITableViewCell 自定义子类不显示内容

在 iOS Swift 中动态调整 UITableViewCell 高度

UITableViewCell 图像在上下滚动后发生变化,但 TextLabel 文本保持不变(iOS8,Swift)