2017-06-29 73 views
0

我一直在试图根据特定的条件实施条件塞格斯,但我不知道我在哪里落后。如果任何人都可以帮助我,这将是一个感谢的 下面是代码: - 有两个塞格斯它必须处理,segueOtp & segueError如何使用条件segue

@IBAction func btnToOtpScreen(_ sender: Any) { 

     let providedMarketingRef = txtMarketingRef.text 
     //let providedhopName = txtShopName.text 

     if((providedMarketingRef?.isEmpty)!) 
     { 
      displayAlertMessage(messageToDisplay: "Enter Your Marketing Reference") 

     } 

     else 
     { 

      let myUrl = URL(string: "http://kumbhkaran.co.in/ios_otp_check/request_sms.php"); 

      //let myUrl = URL(string: "http://kumbhkaran.co.in/OTPCheck/request_sms.php"); 
      var request = URLRequest(url:myUrl!); 
      request.httpMethod = "POST"; 

      let postString = "email=\(Email)&mobile=\(UserName)&name=\(ShopName)" 

      request.httpBody = postString.data(using: String.Encoding.utf8); 

      let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in 

       DispatchQueue.main.async 
        { 

         //spinningActivity!.hide(true) 

         if error != nil { 
          self.displayAlertMessage(messageToDisplay: error!.localizedDescription) 
          return 
         } 

         do { 
          let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 

          if let parseJSON = json { 

           var msg : String! 

           //getting json response 
           msg = parseJSON["message"] as! String? 

           print(msg) 

         if(msg == "SMS request is initiated! You will be receiving it shortly.") 
          { 

          //self.performSegue(withIdentifier: "segueOTP", sender: self) 

          self.GlobalSegue="segueOTP" 
          } 
          else if(msg == "Sorry! Error occurred in registration.") 
          { 
           //self.performSegue(withIdentifier: "segueError", sender: self) 
          self.GlobalSegue="segueError" 
          } 

          else if(msg == "Mobile number already existed!") 
          { 
          //self.performSegue(withIdentifier: "segueError", sender: self) 
          self.GlobalSegue="segueError" 
          } 
          else if(msg == "Sorry! mobile number is not valid or missing.") 
          { 
           //self.performSegue(withIdentifier: "segueError", sender: self) 
           self.GlobalSegue="segueError" 
          } 


          } 
         } catch{ 
          print(error) 
         } 



       } 

      } 

      task.resume() 


     } 

    } 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if (GlobalSegue=="segueOTP") 
    { 
    let destViewController : OTPScreen = segue.destination as! OTPScreen 
    destViewController.Category = Category 
    destViewController.SubCategory = SubCategory 
    destViewController.ShopName = ShopName 
    destViewController.ManagerName = ManagerName 
    destViewController.ManagerMobile = ManagerMobile 
    destViewController.UserName = UserName 
    destViewController.Landline = Landline 
    destViewController.Email = Email 
    destViewController.Website = Website 
    destViewController.City = City 
    destViewController.Address = Address 
    destViewController.Area = Area 
    destViewController.Pincode = Pincode 
    destViewController.StartTime = StartTime 
    destViewController.EndTime = EndTime 
    destViewController.ShopStatus = ShopStatus 
    destViewController.HomeDelivery = HomeConsultancy 
    destViewController.Password = Password 
    destViewController.MarketingRef = txtMarketingRef.text! 
    destViewController.ImgShopName = ShopName 
    destViewController.OtherCategory = Other 
    destViewController.WorkerCount = WorkerCount 
    destViewController.latitude = lblLatitude.text! 
    destViewController.longitude = lblLongitude.text! 
} 
    else 
    { 
     var _ : ErrorController = segue.destination as! ErrorController 
    } 

} // 和ErrorController祝贺的,我想根据条件分流两种不同的观点。

+1

究竟是什么问题?怎么了?你想要发生什么? – Paulw11

+0

检查if else条件,那些segue的不工作。应在不同条件下调用两个不同的segue – himesh

+0

设置一个断点并逐步执行代码。它看起来不错,但也许你的条件没有得到满足。 – Paulw11

回答

0

你必须通过它的标识来区分塞格斯:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    switch segue.identifier { 

    case "segueOTP": 
     let destViewController = segue.destination as! OTPScreen 
     destViewController.Category = Category 
     destViewController.SubCategory = SubCategory 
     destViewController.ShopName = ShopName 
     destViewController.ManagerName = ManagerName 
     destViewController.ManagerMobile = ManagerMobile 
     destViewController.UserName = UserName 
     destViewController.Landline = Landline 
     destViewController.Email = Email 
     destViewController.Website = Website 
     destViewController.City = City 
     destViewController.Address = Address 
     destViewController.Area = Area 
     destViewController.Pincode = Pincode 
     destViewController.StartTime = StartTime 
     destViewController.EndTime = EndTime 
     destViewController.ShopStatus = ShopStatus 
     destViewController.HomeDelivery = HomeConsultancy 
     destViewController.Password = Password 
     destViewController.MarketingRef = txtMarketingRef.text! 
     destViewController.ImgShopName = ShopName 
     destViewController.OtherCategory = Other 
     destViewController.WorkerCount = WorkerCount 
     destViewController.latitude = lblLatitude.text! 
     destViewController.longitude = lblLongitude.text! 

    case "segueError": 
     var _ = segue.destination as! ErrorController 

    default : break 

    } 
} 

注:

请符合命名约定的变量名以小写字母。