【问题标题】:Segueing custom view cells to custom view controller将自定义视图单元格绑定到自定义视图控制器
【发布时间】:2016-03-03 23:55:23
【问题描述】:

我正在使用集合视图来显示自定义集合视图单元格的网格,以表示类别图标,这些图标将用作按钮以连接到表格视图控制器以显示类别列表。我正在使用一组“产品”(标签)和“图像”(产品图像)来显示基于原型的多个自定义单元格

  func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {



    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell

    cell.imageView?.image = self.images[indexPath.row]

    cell.labelView?.text = self.products[indexPath.row]

    return cell
}

如何将我的主页视图控制器设置为单个自定义表格视图控制器,以根据选择的图标显示不同的类别列表?非常感谢任何帮助,仍然习惯于 xcode 和 swift

【问题讨论】:

  • 我需要澄清一下。您是在问如何从一个 VC 转到另一个 VC?或者询问如何根据选择的单元格选择不同的 VC?或者如何对单元格的选择进行分类?
  • 根据选择的单元格选择不同的 VC 最接近我的理解。我希望每个单元格在选择时以相同的方式在表格视图中显示类别列表(这是硬件的基本购物应用程序)。我希望能够创建一个原型表视图单元格,左侧有一个 imageView,并且在所选类别单元格的每个“列表”中心有一个描述作为标签。

标签: xcode swift


【解决方案1】:

如果我理解正确,您可以使用相同的子 UITableViewController 并根据选择的单元格传递不同的数据。

首先在 CollectionViewController 中实现

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)

然后用数据执行segue

performSegue("identifier", sender: self.products[indexPath.row])

【讨论】:

  • 我的下一个问题是如何分配一个对象,该对象包含 UIImage 数组(列表图片)和字符串数组(列表描述),选择特定图标。这个对象会是 performSegue 方法中的发送者吗?
  • 也许我可以使用一系列case语句来确定在主视图控制器中单击特定索引处的图标后,哪些数据将显示在tableview控制器中?
  • 理想情况下,您会将数据存储在一个数组中,索引到您用于文本/图像数组的相同索引,而不是将必要的数据传递给您的下一个 ViewController
【解决方案2】:

首先,您的视图控制器必须符合UICollectionViewDelegate,然后您必须实现此委托方法以在选择单元格时执行转场:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    performSegueWithIdentifier("identifier", sender: nil)
}

然后检查segue标识符是否匹配,获取所选单元格的indexPath,构造所选产品和图像的元组,最后将其传递给您的目的地tableViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "identifier" {
        let indexPath = collectionView.indexPathsForSelectedItems()!.first!
        let selectedProduct = (product: products[indexPath.row], image: images[indexPath.row])
        let controller = segue.destinationViewController as! YourTableViewController
        controller.product = selectedProduct
    }
}

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多