【问题标题】:use single table view controller for each collection view cell press为每个集合视图单元格按使用单个表视图控制器
【发布时间】:2016-03-28 17:40:42
【问题描述】:

我有 5 个集合视图单元,名称分别为“Resturants”、“shops”、“Medical”、“parlor”、“parks”等。所以现在我设置了 10 个视图控制器,我在每个 5 个控制器中放置了表格视图,我正在调用 json 数据并在表格视图中显示。我还有一个自定义单元格,用于所有 iew controlelr 表格视图

就像说,如果用户按下 Restaurant,我将重定向到一个视图 controlellr。我已经调用了 `baseurl/category_01 的 webservies。因此,我将从这个 url 获取名称、地址、图像,并将显示在我的表格视图中

但我知道这是错误的做法。如果我有 20 个集合视图单元格。那么如果我用 20 个表视图创建 20 个视图控制器,那就不好了。

这是我在 swift 2.0 中的第一个应用程序。

任何人都可以建议我对我的所有 10 个集合视图数据单元格使用带有一个表视图的单视图控制器吗?

但是我的集合视图单元格数据中的一件事是我从一个 json url 获取。因为每个数据都被指定为一个类别 id.Like:

[
{
category_id : 0
category_name : Restaurant
},
{
category_id : 1
category_name : park
},
{
category_id : 2
category_name : shops
},
{
category_id : 3
category_name : medical
},
]

像明智的 10 个单元格数据一样,我将在表格视图中显示。因此,当我将一个视图控制器与一个表格视图一起使用时,我需要提及,`indespath.row 按下并且应该等于我的类别 ID 并且应该显示相关数据。

现在我在collectionviewcontroller.swift 中使用的是。我只是按下了哪个索引路径行,我只是导航到另一个视图控制器

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
        // You can use indexPath to get "cell number x", or get the cell like:
    let cell  = collectionView.cellForItemAtIndexPath(indexPath)

    if((indexPath.row) == 0) {

        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let vc: ViewController2 = storyboard.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2
        self.presentViewController(vc, animated: true, completion: nil)
        print("Layout 1 clicked")

    }
    else if((indexPath.row) == 1) {
        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let vc: ViewController3Bank = storyboard.instantiateViewControllerWithIdentifier("ViewController3Bank") as! ViewController3Bank
        self.presentViewController(vc, animated: true, completion: nil)
        print("Layout 2 clicked")
    }

那么如何使用单个 viewcontrolel1r 表视图来做到这一点..请帮帮我..

谢谢

【问题讨论】:

  • 您应该重用 tableview 并在必要时随时填充相关数据。
  • 是的,但是我没有看到任何教程和任何 git hub 演示项目。我是 ios 的初学者。我需要在我的第一个应用程序中实现。但不能这样做!
  • 如果可能的话,您能否建议一些演示或教程链接,或者在表格视图中 indexpath menthod 的单元格行中解释一些代码

标签: ios swift uitableview uicollectionview


【解决方案1】:

将类别名称存储在数组或其他位置,只要单元格被推送,您就可以通过从数组中选择来调用某个类别,如下所示

categoryArray[indexPath.row]

然后当转换到另一个视图即将完成时,您检查已选择的类别并使用相关数据填充表格视图。您可以像这样设置结构:

func determineDataSource()
{
  switch category
  {
    case "Restaurant":
      print("restaurant")
.
.
.
}

【讨论】:

  • 所以,我不需要在cellrowatindexpath做??
  • 不,实际上在我的视图控制器中,我知道一个表格视图。我有cellrowatindexpath。所以在那个方法中我不需要做任何事情??
  • 你必须实现这个方法才能看到单元格