2017-03-25 12 views
0

プロジェクトでピッカー4個を作成しました。そのうちの1つは"source"です。私は店の応答をソースと共に受け取った。私は応答として私が受け取ったものは、私のpickerViewでそれを欲しいと思う。swift3のPickerViewに応答値を追加

import UIKit 

class bookTicketViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource,UITextFieldDelegate ,XMLParserDelegate{ 

    @IBOutlet var sourceTextField: UITextField! 
    @IBOutlet var destinationTextField: UITextField! 
    @IBOutlet var adultsTextField: UITextField! 
    @IBOutlet var childTextField: UITextField! 

    @IBOutlet weak var sourcePicker: UIPickerView! 
    @IBOutlet weak var destinationPicker: UIPickerView! 
    @IBOutlet weak var adultsPicker: UIPickerView! 
    @IBOutlet weak var childPicker: UIPickerView! 

    var source = NSMutableArray() 
    var destination = ["Mumbai","Pune","Jaipur","Baroda","Goa"] 
    var adults = ["1","2","3","4","5","6","7","8","9","10"] 
    var child = ["0","1","2","3","4","5","6","7","8","9","10"] 

    var parser = XMLParser() 
    var parser1 = XMLParser() 
    var posts = NSMutableArray() 
    var posts1 = NSMutableArray() 
    var elements = NSMutableDictionary() 
    var element = NSString() 
    var total_amount = NSMutableString() 
    var xmlData = NSMutableData() 
    var ticket_no = NSMutableString() 
    var adultAmount = NSMutableString() 
    var childAmount = NSMutableString() 
    var source1 = NSMutableArray() 
    var title1 = NSMutableString() 

    var date = NSMutableArray() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.HelloWebService() 
     print("Get ",self.source) 

    } 
    override func viewDidAppear(_ animated: Bool) { 

    } 


    @IBAction func confirmTicketSubmitButton(_ sender: Any) { 

     self.service1() 
     // self.service2() 
    } 

    func service1() 
    { 

     let source = sourceTextField.text 
     let destination = destinationTextField.text 
     let adults = adultsTextField.text 
     let child = childTextField.text 

     let is_SoapMessage = String (format :"<soapenv:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Header/><soapenv:Body><ticket_amount soapenv:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'><SourceTextField xsi:type='xsd:string'>\(source!)</SourceTextField><DestinationTextField xsi:type='xsd:string'>\(destination!)</DestinationTextField><AdultsTextField xsi:type='xsd:int'>\(adults!)</AdultsTextField><ChildTextField xsi:type='xsd:int'>\(child!)</ChildTextField></ticket_amount></soapenv:Body></soapenv:Envelope>") 

     let is_URL: String = "http://192.168.43.23/app/app/service/registrationService.php?wsdl" 

     let lobj_Request = NSMutableURLRequest(url: NSURL(string: is_URL)! as URL) 
     let session = URLSession.shared 

     lobj_Request.httpMethod = "POST" 
     lobj_Request.httpBody = is_SoapMessage.data(using: String.Encoding.utf8) 

     lobj_Request.addValue("192.168.43.23", forHTTPHeaderField: "Host") 

     lobj_Request.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type") 

     lobj_Request.addValue(String (is_SoapMessage), forHTTPHeaderField: "Content-Length") 

     lobj_Request.addValue("http://192.168.43.23/app/app/service/registrationService.php/ticket_amount/ticket_amount", forHTTPHeaderField: "SOAPAction") 
     let task = session.dataTask(with: lobj_Request as URLRequest, completionHandler: {data, response, error -> Void in 
      print("response = \(response)") 

      let xmlData = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 

      self.xmlData = NSMutableData(data: data!) 

      print("Body: \(xmlData)") 

      self.beginParsing() 

      if error != nil 
      { 
       print("Error: ") 
      } 

     }) 
     task.resume() 
    } 

    func HelloWebService() 
    { 
     let is_SoapMessage = String (format :"<soapenv:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Header/><soapenv:Body><rout_detail soapenv:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/></soapenv:Body></soapenv:Envelope>") 


     let is_URL: String = "http://192.168.43.23/app/app/service/registrationService.php?wsdl" 

     let lobj_Request = NSMutableURLRequest(url: NSURL(string: is_URL)! as URL) 
     let session = URLSession.shared 

     lobj_Request.httpMethod = "POST" 
     lobj_Request.httpBody = is_SoapMessage.data(using: String.Encoding.utf8) 

     lobj_Request.addValue("192.168.43.23", forHTTPHeaderField: "Host") 

     lobj_Request.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type") 

     lobj_Request.addValue(String (is_SoapMessage), forHTTPHeaderField: "Content-Length") 

     lobj_Request.addValue("http://192.168.43.23/app/app/service/registrationService.php/rout_detail", forHTTPHeaderField: "SOAPAction") 
     let task = session.dataTask(with: lobj_Request as URLRequest, completionHandler: {data, response, error -> Void in 
      print("response = \(response)") 

      let xmlData = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 

      self.xmlData = NSMutableData(data: data!) 

      print("Body: \(xmlData)") 

      self.beginParsing() 
      print("hello \(self.title1)") 
      print("hello \(self.date)") 

      self.source.add(self.date) 

      print("Joom",self.source) 

      if error != nil 
      { 
       print("Error: ") 
      } 

     }) 
     task.resume() 
    } 



    func beginParsing() 
    { 
     posts = [] 
     parser = (XMLParser(data:xmlData as Data)) 
     parser.delegate = self 
     parser.parse() 


     self.source.add(self.date) 


//  DispatchQueue.main.async(execute: { 
//   let storyboard = UIStoryboard(name: "Main", bundle: nil) 
//   let destViewController = storyboard.instantiateViewController(withIdentifier: "confirmTicketView") as! confirmTicketViewController 
//   destViewController.postTicketNo = "\(self.ticket_no)" 
//   destViewController.postTotalAmount = "\(self.total_amount)" 
//   destViewController.postAdultAmount = "\(self.adultAmount)" 
//   destViewController.postChildAmount = "\(self.childAmount)" 
//   destViewController.sourceData = self.sourceTextField.text! 
//   destViewController.destinationData = self.destinationTextField.text! 
//   destViewController.adultsData = self.adultsTextField.text! 
//   destViewController.childData = self.childTextField.text! 
//    
//   self.present(destViewController, animated: true, completion: nil) 
//  }); 
    } 


    // didStartElement 
    func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { 

     element = elementName as NSString 

     if (elementName as NSString).isEqual(to:"response") 
     { 
      elements = NSMutableDictionary() 
      elements = [:] 
      ticket_no = NSMutableString() 
      ticket_no = "" 
      total_amount = NSMutableString() 
      total_amount = "" 
      adultAmount = NSMutableString() 
      adultAmount = "" 
      childAmount = NSMutableString() 
      childAmount = "" 



     } 
     if (elementName as NSString).isEqual(to: "source") 
     { 
      elements = NSMutableDictionary() 
      elements = [:] 
      title1 = NSMutableString() 
      title1 = "" 
      date = NSMutableArray() 
      date = [] 

     } 
     // print(String(format : "didStartElement/elementName %@", elementName)) 


    } 

    // FoundCharacters 

    func parser(_ parser: XMLParser, foundCharacters string: String) 
    { 
     let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased() 

     let str = data.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression, range: nil) 

     if element.isEqual(to:"ticket_no") { 
      ticket_no.append(string) 
      print(ticket_no) 
     } 
     if element.isEqual(to:"total_amount") { 
      total_amount.append(string) 
      print(total_amount) 
     } 
     if element.isEqual(to:"adultAmount") { 
      adultAmount.append(string) 
     } 
      if element.isEqual(to:"childAmount") { 
       childAmount.append(string) 
     } 
      else if element.isEqual(to: "item") { 


       self.date.add(str) 
     } 

    } 

    // DidEndElement 
    func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) 
    { 
     // print(String(format : "didEndElement/elementName %@", elementName)) 
     if (elementName as NSString).isEqual (to:"response") { 
      if !ticket_no.isEqual(nil) { 
       elements.setObject(ticket_no, forKey:"ticket_no" as NSCopying) 
      } 
      if !total_amount.isEqual(nil) { 
       elements.setObject(total_amount, forKey:"total_amount" as NSCopying) 
      } 
      if !adultAmount.isEqual(nil) { 
       elements.setObject(adultAmount, forKey:"adultAmount" as NSCopying) 
      } 
      if !childAmount.isEqual(nil) { 
       elements.setObject(childAmount, forKey:"childAmount" as NSCopying) 
      } 

      posts.add(elements) 
     } 
     if (elementName as NSString).isEqual(to: "source") 
     { 


      if !date.isEqual(nil) { 
       elements.setObject(date, forKey: "item" as NSCopying) 
      } 
      posts.add(elements) 
     } 
    } 
    func numberOfComponents(in pickerView: UIPickerView) -> Int 
    { 
     return 1 
    } 

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

     var countrows: Int = self.source.count 

     if pickerView == sourcePicker 
     { 
      countrows = self.source.count 
     } 
     if pickerView == destinationPicker 
     { 
      countrows = self.destination.count 
     } 
     if pickerView == adultsPicker 
     { 
      countrows = self.adults.count 
     } 
     if pickerView == childPicker 
     { 
      countrows = self.child.count 
     } 
     return countrows 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 



     print("get source1",self.source) 

     if pickerView == sourcePicker 
     { 
      self.view.endEditing(true) 
      return self.source[row] as? String 
     } 
     else if pickerView == destinationPicker 
     { 
      self.view.endEditing(true) 
      return destination[row] 
     } 
     else if pickerView == adultsPicker 
     { 
      self.view.endEditing(true) 
      return adults[row] 
     } 
     else if pickerView == childPicker 
     { 
      self.view.endEditing(true) 
      return child[row] 
     } 
     return "" 
    } 


    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

     if pickerView == sourcePicker { 

      self.sourceTextField.text = self.source[row] as? String 
      self.sourcePicker.isHidden = true 
     } 
     else if pickerView == destinationPicker { 
      self.destinationTextField.text = self.destination[row] 
      self.destinationPicker.isHidden = true 
     } 
     else if pickerView == adultsPicker { 
      self.adultsTextField.text = self.adults[row] 
      self.adultsPicker.isHidden = true 
     } 
     else if pickerView == childPicker { 
      self.childTextField.text = self.child[row] 
      self.childPicker.isHidden = true 
     } 
    } 


    func textFieldDidBeginEditing(_ textField: UITextField) 
    { 
     if textField == self.sourceTextField 
     { 
      self.sourcePicker.isHidden = false 
      textField.endEditing(true) 
     } 
     if textField == self.destinationTextField 
     { 
      self.destinationPicker.isHidden = false 
      textField.endEditing(true) 
     } 
     if textField == self.adultsTextField 
     { 
      self.adultsPicker.isHidden = false 
      textField.endEditing(true) 
     } 
     if textField == self.childTextField 
     { 
      self.childPicker.isHidden = false 
      textField.endEditing(true) 
     } 
    }} 

マイショップレスポンス

(
    RAJKOT, 
    AHMEDABAD, 
    SURAT, 
    VAPI, 
    MUMBAI, 
    PUNE, 
    JAIPUR, 
    BARODA, 
    GOA 
) 
+0

をリロードする必要がありますか? – Pankaj

+0

'sourcePicker'に何も載っていません – ViralRathod

答えて

1

あなただけが直面している問題が何であるかをpickerview

sourcePicker.reloadAllComponents() 
関連する問題