2016-10-17 1 views
0

Каков наилучший способ добавить элемент в массив на одном VC, а затем использовать команду «подготовиться к segue» для переноса массива в другой VC? До сих пор это то, что мне удалось придумать: (VC1)Подготовьте для Segue с массивом - Xcode 8.0 Swift 3.0

var items: [String] = ["Hello"] 

(VC2):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    var destViewController: ViewController = segue.destination as! ViewController 
    destViewController.items = [textField.text!] 
    items.append(textField.text!) 
} 

На VC2 ошибка придумывает, что государства, «использование неразрешенного идентификатора» на линии

items.append(textField.text!) 
+0

использовать его непосредственно destViewController.items.append (textField.text!) – zombie

+0

Я бы нужно удалить 'destViewController.items = [textField.text]' и заменить его ' destViewController.items.append (textField.text! ' –

+0

обе две последние строки – zombie

ответ

3

Я довольно новичок в iOS/Swift, но недавно столкнулся с ситуацией. Вот как я это делаю.

SourceViewController.swift

class SourceViewController: UIViewController { 
    let stringToPass = "Hello World" 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     let destinationVC = segue.destination as! DestinationViewController 
     destinationVC.receivedString = stringToPass 
     } 
    } 

DestinationViewController.swift

class DestinationViewController: UIViewController { 

    var receivedString: String? 

    if let newString = receivedString { 
     print(newString) 
    } 
... 

Я понимаю, что это немного отличается от вашего примера, но важно отметить, что при создании «destinationVC» вы затем может изменить его свойства. Ключевым отличием является то, вы должны обеспечить объем переменной (destinationVC.receivedString) при присвоении значения или в случае добавления в массив:

destViewController.items.append(textField.text!) 

Без обеспечения области видимости Xcode не удается найти переменную (идентификатор), который вы пытаетесь изменить, так как он не был частью текущего файла или части импорта.

+0

Как бы добавить добавление элемента в массив? –

+0

Вы бы сделали это именно так, как вы показали: 'destViewController.items.append (textField.text!)' – lostinswift

0

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
 
print("thank you very much for your helpful suggestions") 
 
print("I think I am pointed at the right direction") 
 
print("Thanks again for your generous contributions") 
 
print("Apoligies! Stackoverflow is pretty well automated to allow me to put it in non programatic format") 
 
}

+0

Пожалуйста, прочитайте функции print() * –