2017-05-13 14 views
0

API에서 내 응용 프로그램의 새 버전을 확인하기위한 경고를 표시하려고합니다. 그리고 그보기에서 userDefault 데이터가 저장소이므로 다른 뷰로 리디렉션하고 싶습니다. 내 리디렉션 코드는 완벽하게 작동하지만 경고 코드를 추가하면 리디렉션이 작동하지 않습니다. 나는 "자기"와 그 시간에 나는 또한 그 관점에서 방향을 바꾸려고 노력할 때 그것이 현재 문제를 만들 수 있다고 경고한다. 다음은이를 달성하기 내 코드 ..현재보기에서 경고 표시 및 다른보기로 리디렉션

override func viewWillAppear(_ animated: Bool) { 
      super.viewWillAppear(animated) 
      updateUserData() //base on userDefault redirection 
     } 
    override func viewDidAppear(_ animated: Bool) { 
      super.viewDidAppear(animated) 
      checkNewVersion() //Alert function for API calling 
     } 

func checkNewVersion() -> Void { 

    //TODO: For check App new version 
     WebRequester.shared.getAppNewVersion { (result, error) in 
     if result != nil { 
      if result?.value(forKey: "status") as! Bool { 
       let strVer = (result?.object(forKey: "data") as! NSDictionary).object(forKey: "platform_version") as! String 
       if UserData.getAppVersion() < strVer { 
        let alert = UIAlertController(title: "Alert", message: "New version of App available", preferredStyle: .alert) 
        let ok = UIAlertAction(title: "Ok", style: .default, handler: { (action) in 
        }) 
        let AppStore = UIAlertAction(title: "App Store", style: .default, handler: { (action) in 
         if let url = URL(string: "itms-apps://itunes.apple.com/app/id1024941703"), 
          UIApplication.shared.canOpenURL(url){ 
          UIApplication.shared.openURL(url) 
         } 
        }) 
        alert.addAction(ok) 
        alert.addAction(AppStore) 
        self.present(alert, animated: true, completion: nil) 
//     OperationQueue().addOperation { 
//      // Put queue to the main thread which will update the UI 
//      OperationQueue.main.addOperation({ 
//       self.present(alert, animated: true, completion: nil) 
//      }) 
//     } 

       } 
      } 
      else { 
       if (result?.object(forKey: "data") as! NSArray).object(at: 0) as? String ?? "" == "Unauthorised access." { 
        Model.shared.deleteAllCoreDataRecord(entity: "CartItem") 
        UIApplication.topViewController()?.navigationController?.popToRootViewController(animated: true) 
       } 
       let msg = result?.value(forKey: "data") as! [String] 
       Model.shared.showAlert(title: "Error", msg: msg[0], controller: self) 
      } 
     } 
     else { 
      Model.shared.showAlert(title: "Error", msg: error?.localizedDescription ?? "Something went wrong at add new address", controller: self) 
     } 
    } 
} 

func updateUserData() -> Void { 
    if UserData.getAppVersion() == "1.0" { 

     if UserData.getUserData() != nil { 

      //TODO: check for user Updated data 
      let params = ["mobile":UserData.getUserMobile()] as [String : Any] 
      let propic = UIImage(named: "temp") 
      weak var objWeek = self 

      Model.shared.showActivity(WithTouchEnable: false,controller: self) 
      WebRequester.shared.customerSignup(params: params as NSDictionary, proImg: propic!){ (result,error) -> Void in 
       Model.shared.HideActivity(controller: self) 
       if (error == nil) { 
        print("login result:",result ?? "") 
        //handle response of sign up 
        let statusstr = result?["status"] as! Bool 
        if (statusstr == false) { 
         //This condition for pepsi welcome offer is expire or not 
         let user = result!["user_info"] as! NSDictionary 
         self.storeUserData(user: user) 

         if UserData.getUserMobileNumVerify() == "No" { 
          let storyboard = UIStoryboard(name: "Main", bundle: nil) 
          let registerScreen = storyboard.instantiateViewController(withIdentifier: "UserRegisterPhoneVC") as! UserRegisterPhoneVC 

          objWeek?.navigationController?.pushViewController(registerScreen, animated: true) 
         } 
         else { 
          if UserData.getPepsiOfferRedim() == "1" || UserData.getPepsiOfferRedim() == "2" { 
           let storyboard = UIStoryboard(name: "Main", bundle: nil) 
           let offerScreen = storyboard.instantiateViewController(withIdentifier: "OfferViewController") as! OfferViewController 
           objWeek?.navigationController?.pushViewController(offerScreen, animated: true) 
          } 
          else { 
           let storyboard = UIStoryboard(name: "Main", bundle: nil) 
           let promoScreen = storyboard.instantiateViewController(withIdentifier: "PromotionViewController") as! PromotionViewController 
           objWeek?.navigationController?.pushViewController(promoScreen, animated: true) 
          } 
         } 
        } 
       } 
      } 
      else { 
       Model.shared.showAlert(title: "Error", msg: (error?.localizedDescription)!, controller: self) 
      } 
     } 

    } 

} 
} 
+0

@Niravs 문제를 생성하는 경고 코드를 넣으십시오. –

답변

0

는, 당신은 단지 그것을 자동으로 가능하지 않고, 다른 컨트롤러로 이동합니다 경고 OK 버튼을 클릭합니다. 당신이 이것을 달성하기 위해

경고 컨트롤러 블록 도움말 :

//show an alert and navigate to previous controller 
      let alertController: UIAlertController = UIAlertController(title: "Password updatd", message: "your alert message", preferredStyle: .alert) 

      let okAction: UIAlertAction = UIAlertAction(title: "OK", style: .default) { action -> Void in 

      //Redirect to new viewcontroler 
      let newVC = self.storyboard.instantiateViewcontroller(identifier: "newvc") as? NewVC 
      self.navigationController?.pushViewController(newVC,animated: true) 
      } 

      alertController.addAction(okAction) 
      self.present(alertController, animated: true, completion: nil) 

댓글 자유롭게 여기

는 코드입니다. 감사합니다