Как передать, какая функция должна вызываться на следующем экране после нажатия на кнопку на основе потока без использования enum в IOS Swift? - PullRequest
0 голосов
/ 28 января 2020

Я использую MVVM Arch с RxSwift, у меня один экран, который обычно используется для более чем 8 потоков. Здесь я не хочу использовать перечисления и переключать приведения, но мне приходится вызывать разные функции, основанные на потоке и маршруте к разным экранам.

Пример: у меня есть два класса A и B, и у обоих будет go до C, здесь C имеет одну кнопку с двумя функциями Теперь, когда мы перейдем к C, и я нажму кнопку в C тогда он должен вызвать функцию, относящуюся к классу A, и направить ее к какому-либо другому контроллеру. Как я могу сделать это без перечислений

Значит, я должен решить в классах A или B, какая функция должна вызываться в C после нажатия на кнопку

1 Ответ

1 голос
/ 28 января 2020
class ViewControllerA: UIViewController {
   override func viewDidLoad() {
    }

    @IBAction func btn_clicked(_ sender: Any) {

       let vc: ViewControllerC = 
       self.storyboard?.instantiateViewController(withIdentifier: 
        "ViewControllerC") as! ViewControllerC
       vc.isFrom = "A"
      self.navigationController?.pushViewController(vc, animated: true)
   }
 }

 class ViewControllerB: UIViewController {
    override func viewDidLoad() {
    }

    @IBAction func btn_clicked(_ sender: Any) {

       let vc: ViewControllerC = 
       self.storyboard?.instantiateViewController(withIdentifier: 
        "ViewControllerC") as! ViewControllerC
       vc.isFrom = "B"
      self.navigationController?.pushViewController(vc, animated: true)
   }
 }
class ViewControllerC: UIViewController {

    var isFrom = ""
    override func viewDidLoad() {
        super.viewDidLoad()
     if isFrom == "A"{
        self.callForA()
      }else if isFrom == "B"{
        self.callForB()     
    }
  }

  func callForA(){
       //Your Code
  }
  func callForB(){
       //Your Code
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...