Перейдите на один и тот же экран, но из двух разных viewcontroller

Объекты JavaScript и JSON не имеют способа установить порядок для ключей. Вы можете получить это прямо в Java (я не знаю, как работают объекты Java), но если это будет веб-клиент или другой потребитель JSON, нет никакой гарантии относительно порядка ключей.

0
задан Kaushik Makwana 17 January 2019 в 09:15
поделиться

3 ответа

В вашем VC1 создайте переменную как vcNames.

class VC1: UIViewController {
        var vcNames = ""
 override func viewDidLoad() {
        super.viewDidLoad()
        //Check your vc's with vcNames.
   }
}

Теперь, нажимая на vc1 из VC2 или VC3, просто передайте свое текущее имя vc с созданной переменной.

 let tempVC1 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "VC1") as? VC1
 tempVC1?.vcNames =  "vc2" //Assign your vc name here
 self.navigationController?.pushViewController(tempVC1!, animated: true)
0
ответ дан A.H.Nuri 17 January 2019 в 09:15
поделиться

Вы можете использовать флаг или перечисление. Я предлагаю для enum bcz иногда в будущем вы можете перейти с нескольких контроллеров на VC1. Всегда удобно использовать enum.

  1. С флагом
class ViewController1: UIViewController {
    // default value is false bcz if you forgot to assign this value then atleast your app won't crash.
    var isFromVC2 : Bool = false
        :
        :
}
  • Использование -> В вашем файле VC1

    [ 111]
  1. с Enum
enum ComingFrom {
    case VC3
    case VC2
}

class ViewController: UIViewController {
    // default value VC2
    var whichController : ComingFrom = .VC2
      :
      :
}
  • Использовать

    switch whichController {
        case .VC2:
            // for vc2 Code
        case .VC3:
            // for VC3 Code
        default:
            // If you forget to assign `whichController` or there will be new condition in future
    }
    
    [1110 ]

Редактировать: Как назначить whichController

let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
vc.whichController = .VC2
self.navigationController?.pushViewController(vc, animated: true)
  • Для большей ясности

enter image description here

0
ответ дан dahiya_boy 17 January 2019 в 09:15
поделиться

Добавьте уникальную переменную Bool, чтобы вы могли понять, куда обращаться к этому контроллеру. Сделайте flag false в viewWillAppear, потому что каждый раз, когда он должен обновляться, это самый простой способ, которым вы можете достичь.

class ViewController1: UIViewController {
      var isFromVC2 = false
      var isFromVC3 = false

     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(true)
         isFromVC2 = false
         isFromVC3 = false
     }

}


class ViewController2: UIViewController {


 //You can call this function from where you want otherwise you can make it global.
    func navigateToVC1() {
        let viewController1 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
        viewController1.isFromVC2 = true
        self.navigationController?.pushViewController(viewController1, animated: true)
    }


}

class ViewController3: UIViewController {

    func navigateToVC1() {
        let viewController1 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
        viewController1.isFromVC3 = true
        self.navigationController?.pushViewController(viewController1, animated: true)
    }

}
0
ответ дан Abhishek Jadhav 17 January 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: