2016-09-20 5 views
0

Я изо всех сил старался передавать данные между контроллерами представления с помощью segues. Я смотрел много обучающих видеороликов YouTube и искал на форумах, но я не могу понять, почему это не сработает. Я не получаю сообщений об ошибках, но когда я нажимаю кнопку «Кнопка», симулятор падает. Я хотел бы помочь! Благодаря!Невозможно передавать данные между контроллерами вида с помощью segues (Xcode 7) (Swift)

Вот код:

ViewController1:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var textField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     let destViewController : ViewController2 = segue.destinationViewController as! ViewController2 

     destViewController.labelText = textField.text! 

    } 

} 

ViewController2:

import Foundation 
import UIKit 

class ViewController2 : UIViewController { 

    @IBOutlet var Label: UILabel! 

    var labelText : String = "" 

    override func viewDidLoad() { 

     Label.text = labelText 

    } 

} 

StoryBoard Изображение:

storyboard image

+0

Какая линия это происходит сбой? – Santosh

+0

@Alife вы пропустили это segue.identifier = "некоторый идентификатор" –

+0

на вашем viewController2 попытайтесь изменить эту строку var labelText: String = "" 0Avar labelText: String! Чтобы предотвратить сбой симулятора, попробуйте изменить этот «destViewController.labelText = textField.text!». к этому «destViewController.labelText = textField.text ??» текстовое поле пуст, поэтому ничего не происходит »« –

ответ

0

Как указано в комментарии, проблема заключалась в том, что вы использовали push-сегу на UIViewController.

Пожалуйста, обратите внимание, что нажатие и модальные перетекает устарели ... Пожалуйста, обратите внимание на это сообщение записи и дайте мне знать, если у вас есть какие-либо сомнения

What's the difference between all the Selection Segues?

0

Убедитесь, чтобы ввести текст в наклейке textField, прежде чем нажать на кнопку, так как вы передаете текст этого лейбла к следующей сцене с помощью силы развертку.

destViewController.labelText = textField.text! //here compiler expects that your textField has the value 
+0

Я пробовал, но все же, симулятор падает. Спасибо за предложение! :) – Alfie

0

Я сделал образец проекта, используя тот же код, и не получил ошибку. В коде нет ничего плохого.

Попробуйте следующее: перейдите к своему инспектору раскадровки и контрольных точек для каждого контроллера вида и убедитесь, что у вас нет выхода в никуда.

+0

Я проверил и ничего не нашел. Однако я получаю ошибку SIGABRT. – Alfie

+0

Это ошибка, которую вы обычно получаете с несвязанными розетками. Все ваши торговые точки должны иметь заполненный круг. У вас должно быть 2 выхода на ViewController (textField и view) и 2 выхода на ViewController 2 (Label and view). – nighttalker

+0

Они у нас есть, и нет других – Alfie

Смежные вопросы