如何使用自定义UITableViewCell制作Hozirontal UITableView

时间:2016-03-30 02:08:54

标签: ios iphone swift uitableview collectionview

我是swift的新手,我正在制作一个视图,显示电影列表看起来像appstore主屏幕(水平UITableView)所以当我自定义UITableViewCell时我遇到了问题。细胞没有在UITableView中显示。我不知道为什么?以及如何解决它!这是我的代码: movieViewController:

class movieViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var mCollection: UICollectionView!
@IBOutlet weak var mTable: UITableView!
var categories = ["Phim Đang Hot", "Phim Lẻ", "Phim Bộ", "Phim Hài", "Phim Kinh Dị"]
@IBOutlet weak var btnMenu: UIBarButtonItem!
override func viewDidLoad() {
    super.viewDidLoad()
    btnMenu.target = self.revealViewController()
    btnMenu.action = Selector("revealToggle:")

    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    self.revealViewController().rearViewRevealWidth = 200

    self.mTable.registerClass(CategoryRow.self, forCellReuseIdentifier: "Cell")
    }

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return categories[section]
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return categories.count
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CategoryRow
    return cell
}
}

和CategoryRow.swift:

class CategoryRow : UITableViewCell {
@IBOutlet weak var collectionView: UICollectionView!
}
extension CategoryRow : UICollectionViewDataSource {

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 12
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("videoCell", forIndexPath: indexPath) as! VideoCell
    return cell
}}
extension CategoryRow : UICollectionViewDelegateFlowLayout {

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    let itemsPerRow:CGFloat = 4
    let hardCodedPadding:CGFloat = 5
    let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
    let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding)
    return CGSize(width: itemWidth, height: itemHeight)
}

这是我的VideoCell:

class VideoCell : UICollectionViewCell {

@IBOutlet weak var imageView: UIImageView!
}

和我的StoryBoard:

enter image description here

和我的Sreen: enter image description here

3 个答案:

答案 0 :(得分:1)

您可以通过将storyView的委托和dataSource设置为来自storyboard的tableViewCell的单元类来实现。

答案 1 :(得分:0)

很抱歉误读了这个问题。

看起来您的collectionView可能没有将其委托设置为单元格。将TelephonyManager更改为此,这将确保您至少生成水平单元格。

cellForRowAtIndexPath

答案 2 :(得分:0)

仔细检查您的标识符和插座(见下图)。

enter image description here

当您开始连接API调用以获取视频图像时,您可能需要查看此blog post,这是本教程的第2部分,但使用AlamoFire调用示例API并下载一些图像。

我注意到你也在使用滑出式菜单。平移手势可能与您的水平滑动集合视图单元格冲突。因此,您可能希望使用屏幕边缘平移手势识别器。或者,您可以在创建可自定义的交互式幻灯片菜单时查看此blog post

最后,它要求很多东西让你整合所有这些教程,而不确定它是否会起作用。所以我继续创建了一个新的GitHub branch called evan,其中包含水平滚动条,API调用和交互式滑出菜单。这就是它的样子:

enter image description here