使用Helper函数从另一个类执行Segue [英] Perform Segue from another class with helper function

查看:15
本文介绍了使用Helper函数从另一个类执行Segue的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个类,ChargeCustomerTwelvethViewController。 在12个视图控制器中,我有一个func goNextView(),它应该在被调用时执行到下一个视图控制器的分段。 goNextView()从AlamoFire完成处理程序内部的class ChargeCustomer调用。 问题是这个函数goNextView()从未被调用过,我也不知道为什么。 我试着根据堆栈溢出Perform Segue From Another Swift File via a class function

的回答使其正常工作
 class TwelvethViewController:UIViewController {

  //when this func is called, it should segue to Thiretheen
  func goNextView() {
    performSegue(withIdentifier: "twelvethToThiretheen", sender: self)
      }
 }

 class ChargeCustomer {

    //send a post request to the server
    Alamofire.request(urlString, method: .post, parameters: params, encoding: JSONEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON {
        (response: DataResponse<Any>) in
                print("received reply from ALamofire") //prints string

           //perform segue to Thireteen View Controller
        func showNextView(fromViewController:TwelvethViewController) {
              print("went through")      //doesn't print
                 fromViewController.goNextView()
                    print("it has segued")      //doesn't print
           }      
      } ///end of Alamofire
   } //end of chargeUsingCustomer

根据何塞·内托更新的答案

 class ChargeCustomer {
 //create instance of the viewcontroller that has segue with identifier    twelvethToThiretheen
   let twelvethVC = TwelvethViewController()

    //send a post request to the server
    Alamofire.request(urlString, method: .post, parameters: params, encoding: JSONEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON {
        (response: DataResponse<Any>) in
                print("received reply from ALamofire") //prints string

//perform segue to Thirteen View Controller
   //crashes: <CleaningApp.TwelvethViewController: 0x7fd4e16ad2a0>) has no 
     //segue with identifier 'twelvethToThiretheen''
 self.showNextView(fromViewController: self.twelvethVC )
      } //end of Alamofire

    //perform segue to Thireteen View Controller
   func showNextView(fromViewController:TwelvethViewController) {
        fromViewController.goNextView()      
       }      
} //end of chargeUsingCustomer

推荐答案

您必须实例化所需的情节提要,然后是十二视图控制器,最后才能进行推送。 如下所示:

let storyBoard = UIStoryboard(name: "youStoryBoard", bundle: nil) 
let vc = storyboard?.instantiateViewController(withIdentifier: "youVCIndentifier") as! TwelvethViewController 
self.navigationController?.pushViewController(vc, animated: true)

这篇关于使用Helper函数从另一个类执行Segue的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆