2016-02-11 3 views
0

У меня возникли проблемы с передачей строки (StringVar) между контроллерами представления с использованием prepareforSegue. Я изучил различные учебники по этому вопросу, но я все еще не увенчался успехом (я новичок, поэтому проблема может быть чем-то очевидным). Мой код структурирована следующим образом:prepareforSegue Не передавая данные

Возникнув ViewController:

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

//Prepare For Segue: 
func prepareforSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
var SVC = segue.destinationViewController as! StudyViewController 
SVC.StringVar = "Hello" 
} 

Направление ViewController:

class StudyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

var StringVar = String() 

//intervening code [omitted] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    print("StringVar = ", StringVar) 
    // Do any additional setup after loading the view. 
} 

Оператор печати в функции viewDidLoad работает отлично, но STRINGVAR остается пустым. Есть идеи? Благодарю.

+0

Является ли ваш 'prepareForSegue' выполнения? Я подозреваю, что нет, потому что, как у вас есть, есть опечатка. Вы найдете это, используя 'override'. – Michael

+0

Майкл, я первоначально включил заявление печати под функцию prepareforsegue, чтобы убедиться, что он выполняет. Ничего не напечатано в окне отладчика, но я просто предположил, что отладчик был немедленно очищен segue (я думаю, это было плохое предположение). Какую опечатку вы видите? Я попытался использовать override func, но это вызвало ошибку «Метод не отменяет какой-либо метод из своего суперкласса». – dimery2006

+0

Спасибо, у меня был «f» в ForSegue, как в нижнем регистре. Капитализация, казалось, все исправила. – dimery2006

ответ

1

Что @michael говорил, что ваш prepareForSegue нужно использовать переопределения ключевое слово, как это:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     //... code 
} 

Xcode должен был скорректированный на это для вас, поэтому убедитесь, что вы проверить орфографию. Если вы не указали ключевое слово override, вы просто определяете новую функцию с именем prepareforSegue.

Вы можете скачать рабочий пример prepareForSegue в действии из моего учебника здесь:

prepareForSegue project files

+0

Дэн, как только я зачислил значение f в «ForSegue», компилятор начал предлагать мне включить ключевое слово переопределения. Спасибо за информацию. и ссылку – dimery2006

+0

Нет проблем. Как правило, позвольте Xcode заглушить код для вас. Вы получите последний синтаксис без опечаток! –

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