如何使用条件segue

时间:2017-06-29 10:21:38

标签: ios swift3 conditional segue xcode8

我一直在尝试根据具体情况实施条件细分,但我不知道我在哪里落后。如果有人能帮助我,那将不仅仅是感恩 以下是代码: - 有两个必须处理的段,segueOtp& segueError

 @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 个答案:

答案 0 :(得分:0)

您必须通过标识符区分segue:

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

    }
}

注意:

请遵守变量名称以小写字母开头的命名约定。