Я буду считать вас есть ViewController класс VC1 (экран 1) & ViewController класс VC2 (экран 2). Я вижу на скриншоте, что вы уже используете segue для перехода от просмотра VC1 к VC2.
Теперь, объявить переменную в классе VC2 давайте назовем его labelValue,
class VC2 {
var labelValue: String?
...
}
Всякий раз, когда вы используете раскадровки SEGUE, чтобы перейти от просмотра одного ViewController к мнению других ViewController в метод с именем,
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
будет вызван, если он переопределен в классе viewController source (scene1 в вашем случае). В этом методе вы сможете получить доступ к контроллеру представления назначения (сцена 2) и его свойствам. Так что для вашего дела вы можете реализовать его, как это,
class VC1 {
//I have assumed the below label will hold the value which you want to pass it to the scene 2.
var lblResult: UILabel!
......
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// You can access the VC2 instance from the segue
if let vc2 = segue.destinationViewController as? VC2 {
vc2.labelValue = lblResult.text
}
}
Теперь, как только вы реализуете prepareForSegue: метод правильно, как показано выше, вы были бы в состоянии получить значение лейбла от сцены 1 до labelValue собственности CЦEHЫ2 Служит.
ли узнать больше о перетекает здесь: More About Segues and Storyboards here.
================================
Edit:
Далее в отредактированном вопрос, в вашем vIEW2 ViewController, вы объявили labelNumber1 в виде строки, а не как UILabel, поэтому всякий раз, когда вы передаете значение labelNumber1, значение будет содержащий в этой переменной и он не будет отображаться на экране, так как это просто нормальная строка. Так что вы можете сделать, это объявить о labelNumber1, как UILabel
class View2: UIViewController {
@IBOutlet var labelNumber1: UILabel!
.....
}
и в вашей подготовке к Segue в ViewController1 внести следующие изменения,
class ViewController1: UIViewController {
.....
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// You can access the VC2 instance from the segue
if let view2 = segue.destinationViewController as? VC2 {
view2.labelNumber1.text = lblResult.text
}
}
Однако, если вы все еще хотите сохранить labelNumber1 в виде строки, и чтобы проверить, было ли значение передано из ViewController1 во время segue, добавьте ниже строку в viewDidLoad() View2 ViewController.
class View2: UIViewController {
.....
override func viewDidLoad() {
super.viewDidLoad()
print("labelNumber1: \(labelNumber1)")
}
}
И вы можете увидеть напечатанное значение labelNumber1 в консоли.
НТН :)
Возможный дубликат [Как вы обмена данными между контроллерами зрения и другими объектами Swift?] (HTTP: // stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and-other-objects-in-swift) – pableiros
По-прежнему вы не присвоили значение в VIEW2. В vc2 внутри вашего viewDidLoad попробуйте. Number1V2.text = labelNumber1 – Joe