【问题标题】:Segue to a Table View Controller based on what was clicked on in a different Table View Controller根据在不同的表视图控制器中单击的内容转到表视图控制器
【发布时间】:2017-03-16 08:44:32
【问题描述】:

我有一个表格视图控制器,其中填充了从 JSON 文件中提取的数据。这个表视图控制器与另一个从同一个 JSON 文件中提取的表视图控制器相连接。我希望加载到第二个视图控制器中的信息根据在第一个表视图控制器中单击的表单元格进行更改。

例如:如果我的第一个表格视图控制器列出了州(阿拉巴马州、阿拉斯加州、亚利桑那州等)并且点击了阿拉巴马州,它将返回阿拉巴马州的城市列表。然而,如果点击阿拉斯加,那么第二个表格视图控制器将显示阿拉斯加的城市。

我什至不确定如何从这里开始,但这是我的代码第一个表视图控制器 didSelectRowAtIndexPath 函数: func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var 行业:行业!

    if inSearch{
        industry = filteredSearch[indexPath.row]
    }
    else{
        industry = industryOfMifi[indexPath.row]
    }
    performSegueWithIdentifier("IndustryPush", sender: industry)
}

这是在第二个表视图控制器中加载适当信息的代码:

  func parseJSON(){
    do{
        let data = NSData(contentsOfURL: NSURL(string: "https://jsonblob.com/api/jsonBlob/580d0ccce4b0bcac9f837fbe")!)

        let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)

        for anItem in jsonResult as! [Dictionary<String, AnyObject>]{

            let industry = anItem["mediaIndustry"] as! String
            if industry == "Interactive Media" {
                let mifiIndustry = anItem["name"] as! String
                print(mifiIndustry)
                let mifiId = anItem["employeeId"] as! Int
                let newIndustry = Name(mifiName: mifiIndustry, mifiId: mifiId)
                industryOfMifi.append(newIndustry)
            }
            else if industry == "Newspaper" {
                let mifiIndustry = anItem["name"] as! String
                print(mifiIndustry)
                let mifiId = anItem["employeeId"] as! Int
                let newIndustry = Name(mifiName: mifiIndustry, mifiId: mifiId)
                industryOfMifi.append(newIndustry)
            }
            else if industry == "Radio" {
                let mifiIndustry = anItem["name"] as! String
                print(mifiIndustry)
                let mifiId = anItem["employeeId"] as! Int
                let newIndustry = Name(mifiName: mifiIndustry, mifiId: mifiId)
                industryOfMifi.append(newIndustry)
            }

        }
    }
    catch let error as NSError{
        print(error.debugDescription)
    }
}

【问题讨论】:

    标签: ios json swift tableview segue


    【解决方案1】:

    这里有点难以判断发生了什么,但本质上您想要做的是将所选行业值的引用传递给第二个表视图控制器。

    这是一种方法。首先,在第二张表 VC 中为 Industry 创建一个类级变量。

    class SecondTableViewController: UITableViewController {
        var industry: Industry?
    }
    

    其次,利用第一个表 VC 中的 prepareForSegue() 方法将 Industry 的实例传递给新的视图控制器。

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "IndustryPush" {
            let secondTableViewController = segue.destinationViewController as! SecondTableViewController
            secondTableViewController.industry = sender as! Industry            
        }
    }
    

    或者,您可以在您的第一个 VC 中创建对所选行业的引用。 (您在 didSelectRowAtIndexPath 函数中设置。)然后您可以将其传递给 prepareForSegue() 中的第二个 VC。

    从那里,您需要弄清楚如何使用 Industry 实例来过滤您的 JSON。从您发布的内容中很难判断。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 2023-03-29
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多