2017-09-28 3 views
0

나는 사용자가 값을 선택하도록 팝업 컨트롤을 표시하기 위해 SwiftyPickerPopover을 사용하고 있습니다. 이전에 앱의 다른 위치에서 다음과 같이 구현했습니다.배열로 SwiftyPickerPopover 선택 채우기

let displayStringFor:((String?)->String?)? = { string in 
      if let s = string { 
       switch(s){ 
       case "Lhe”: 
        return "Lh” 
       case "Khi": 
        return "Khi” 
       case "Isb”: 
        return "Isb" 
       case "Guj": 
        return "Guj" 
       default: 
        return s 
       } 
      } 
      return nil 
     } 

     let p = StringPickerPopover(title: "Select City", choices: ["Lhe”,”Khi”,”Isb”,”Guj”]) 
      .setDisplayStringFor(displayStringFor) 
      .setDoneButton(
       action: { popover, selectedRow, selectedString in 

        self.cityButton.setTitle(selectedString,for: .normal) 
        if selectedRow == 0 { 
         self.cityImage.image = UIImage(named: "Lhe") 
        } else if selectedRow == 1 { 
         self.cityImage.image = UIImage(named: "Khi") 
        } else if selectedRow == 2 { 
         self.cityImage.image = UIImage(named: "Isb") 
        } else if selectedRow == 3 { 
         self.cityImage.image = UIImage(named: "Guj") 
        } 
      }) 
      .setCancelButton(action: {_, _, _ in 
      }) 
     p.appear(originView: sender as! UIView, baseViewController: self) 

값이 하드 코드 된 것을 볼 수 있습니다. 이제는 모든 도시를 제공하는 API가 있습니다. 그래서 var mainCitiesArray = [City]()을 만들고 API를 호출하고 데이터를 파싱했습니다.

mainCitiesArray에서이 팝업에 표시하고 싶은 도시가 모두 있습니다. 어떻게해야합니까?

답변

0

도시 이름을 문자열 배열로 구문 분석하면됩니까?

E.G.

let citiesNamesArray = mainCitiesArray.map({ 
    (city: City) -> String in 
    return city.name 
}) 

그리고 당신은 citiesNamesArray 매개 변수 choises에 전달할 수 있습니다.