2016-11-02 8 views
0

私はJSONファイルから取得されているデータでいっぱいになっているテーブルビューコントローラを持っています。このテーブルビューコントローラは、同じJSONファイルから取得している別のテーブルビューコントローラと重なり合っています。私は、最初のテーブルビューコントローラでクリックされたテーブルセルに基づいて、2番目のビューコントローラにロードされる情報を変更する必要があります。別のテーブルビューコントローラでクリックされたものに基づいてテーブルビューコントローラに接続

例:最初のテーブルビューコントローラが州(アラバマ州、アラスカ州、アリゾナ州など)にリストされ、アラバマ州がクリックされた場合、アラバマ州の都市リストが返されます。ただし、アラスカをクリックすると、2番目のテーブルビューコントローラーには、代わりにアラスカにある都市が表示されます。

私もここで開始する方法を正確に確認していないが、ここに私のコードの最初のテーブルビューコントローラdidSelectRowAtIndexPath機能は次のとおりです。 にfuncのtableView(のtableView:のUITableView、didSelectRowAtIndexPath indexPath:NSIndexPath){ VAR業界:工業!

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

そして、ここで第2のテーブルビューコントローラに適切な情報をロードしているコードです:

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) 
    } 
} 

答えて

1

それはここで何が起こっているのか教えて少し難しいですが、本質的に、あなたがしたいものを選択した業界値への参照を2番目のテーブルビューコントローラに渡します。

これを行う方法が1つあります。まず、2番目のテーブルVCにIndustry用のクラスレベルの変数を作成します。

class SecondTableViewController: UITableViewController { 
    var industry: Industry? 
} 

第二には、新しいビューコントローラに産業のインスタンスを渡すためにあなたの第一表VCでprepareForSegue()メソッドを使用しています。

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

また、最初のVCで選択した業界への参照を作成することもできます。 (didSelectRowAtIndexPath関数で設定します。)そして、THATをprepareForSegue()の2番目のVCに渡すことができます。

ここから、Industryインスタンスを使用してJSONをフィルタする方法を理解してください。あなたが投稿したものから伝えるのはちょっと難しいです。

希望に役立ちます。

関連する問題