2016-11-02 2 views
0

JSON 파일에서 가져 오는 데이터로 채워진 테이블보기 컨트롤러가 있습니다. 이 테이블 뷰 컨트롤러는 동일한 JSON 파일에서 가져 오는 다른 테이블 뷰 컨트롤러와 연결됩니다. 두 번째보기 컨트롤러로로드되는 정보를 첫 번째 테이블보기 컨트롤러에서 클릭 한 테이블 셀을 기준으로 변경할 싶습니다.다른 테이블보기 컨트롤러에서 클릭 한 내용을 기반으로 테이블보기 컨트롤러에 연결

예를 들면 : 내 첫 번째 테이블 뷰 컨트롤러가 (앨라배마, 알래스카, 애리조나 등) 상태로 나열되고 앨라배마를 클릭하면 알라바마에있는 도시 목록이 반환됩니다. 그러나 알래스카를 클릭하면 두 번째 테이블보기 컨트롤러가 대신 알래스카에있는 도시를 표시합니다.

난 여기 시작하는 방법을 정확히 모르겠지만 여기 내 코드 첫 번째 테이블 뷰 컨트롤러 didSelectRowAtIndexPath 기능은 다음과 같습니다 FUNC의있는 tableView (있는 tableView : jQuery과, 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) 
    } 
} 

답변

1

그것은 여기에 무슨 일이 일어나고 있는지를 말하는 건 좀 어렵지만, 본질적으로 당신이 원하는 무엇을 두 번째 테이블 뷰 컨트롤러에 선택된 산업 값에 대한 참조를 전달하십시오.

여기 한 가지 방법이 있습니다. 먼저 두 번째 테이블 VC에서 Industry에 대한 클래스 수준 변수를 만듭니다.

class SecondTableViewController: UITableViewController { 
    var industry: Industry? 
} 

둘째, 새로운 뷰 컨트롤러에 산업의 인스턴스를 전달하기 위해 1 표 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 함수에서 설정했다.) 그리고 나서 prepareForSegue()의 두 번째 VC에 THAT을 전달할 수있다.

여기에서 Industry 인스턴스를 사용하여 JSON을 필터링하는 방법을 알아 냈습니다. 당신이 올린 글에서 이야기하기가 조금 어렵습니다.

희망이 있습니다.

관련 문제