Объекты JavaScript и JSON не имеют способа установить порядок для ключей. Вы можете получить это прямо в Java (я не знаю, как работают объекты Java), но если это будет веб-клиент или другой потребитель JSON, нет никакой гарантии относительно порядка ключей.
В вашем 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)
Вы можете использовать флаг или перечисление. Я предлагаю для enum bcz иногда в будущем вы можете перейти с нескольких контроллеров на VC1. Всегда удобно использовать enum.
blockquote>
- С флагом
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]blockquote>
- с Enum
enum ComingFrom { case VC3 case VC2 } class ViewController: UIViewController { // default value VC2 var whichController : ComingFrom = .VC2 : : }
Использовать
[1110 ]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 }
Редактировать: Как назначить whichController
blockquote>let vc = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1 vc.whichController = .VC2 self.navigationController?.pushViewController(vc, animated: true)
- Для большей ясности
Добавьте уникальную переменную 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)
}
}