【问题标题】:Creating a horizontal scrolling menu创建水平滚动菜单
【发布时间】:2017-09-24 19:45:02
【问题描述】:

我正在尝试创建一个菜单,其中顶部水平滚动视图包含菜单类别。当我点击其中一个菜单类别时,会出现与该类别相关的广告。

第一个选择

--**First**---|--Second--|---Third--|--Fourth--| (scrolling categories)
------------------------------------------------------------------
\\\FirstA\\\    \\\FirstB\\\   \\\FirstC\\\     \\\FirstD\\\
\\\FirstA\\\    \\\FirstB\\\   \\\FirstC\\\     \\\FirstD\\\
------------------------------------------------------------------

选择秒时

--First---|--**Second**--|---Third--|--Fourth--| (scrolling categories)
------------------------------------------------------------------
\\\SecondA\\\    \\\SecondB\\\   \\\SecondC\\\     \\\SecondD\\\
\\\SecondA\\\    \\\SecondB\\\   \\\SecondC\\\     \\\SecondD\\\
------------------------------------------------------------------

当我点击 First Category 时,与 first 相关的数据以 collectionView 的形式出现。同样,当我点击第二个类别时,与第二个相关的数据会出现在 UICollectionView 中。

现在我正在考虑在具有两个 UICollectionViews 的 UITableViewCell 中执行此操作。第一个 UICollectionView 将包含类别,第二个 UICollectionView 将包含与类别相关的数据。

但我从来没有在一个 UITableViewCell 中使用过两个 UICollectionView。 所以我问的是这种要求的正确方法还是我应该以其他方式来做。

【问题讨论】:

  • 我想在一个 UITableViewCell 中使用两个集合视图,而不是在 UIViewController 中
  • 也许尝试子类化 UITableViewCell 并使其符合 UICollectionViewController 协议?

标签: ios objective-c swift xcode uitableview


【解决方案1】:

您可以将UITableViewCell 子类化,添加UICollectionView 作为子视图,符合UICollectionViewDataSourceUICollectionViewDelegate

这里是使用 xib 的示例代码

class CollectionViewTVC: UITableViewCell {
    @IBOutlet weak var collectionView: UICollectionView!
}

extension CollectionViewTVC: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        // return items
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        // return cell
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
        // return size
    }
}

extension CollectionViewTVC: UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        // select cell action
    }
}

【讨论】:

    【解决方案2】:

    为什么不使用两个表格视图单元格,每个 collectionViewu 一个?

    【讨论】:

    • 好吧,最终我用了两个tableviewcells,只是想知道它是否可以在一个tableviewcell中完成
    • 我认为这不是最好的方式,但是您可以在 xib 中添加两个 CollectionView 一个在另一个之下,创建两个符合委托和数据源的自定义类。将两个collectionViews连接到单元格中的插座并实例化他们的数据源和代表(您之前制作的那些),您也可以只制作一个额外的数据源和代表,并且第二个collectionView符合该单元格,但我认为第一个解决方案更简洁跨度>
    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多