Передача данных между двумя контроллерами представления в Swift

У меня есть 2 контроллера представления, созданные отдельно. Это не навигационный контроллер или что-то другое. У меня есть 2 файла для каждого из них: ViewController.swift, SecondViewController.swift. Второй VC называется audioList.

В 1-й ВК у меня есть кнопка и по нажатию на нее я открываю вторую ВК по коду

dispatch_sync(dispatch_get_main_queue(), { () -> Void in

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let controller = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
    self.presentViewController(controller, animated: true, completion: nil)

})

В SecondViewController есть массив с именем music. Я хочу заполнить его элементами перед кодом, который вы видите выше - из 1-го ВК.

Я прочитал это и что один пост, другие читали о том, как сделать это, создав протокол с функцией, которая изменяет данные, много пробовал с переходами , их выполнение и prepareFor-функции - но ничего не получалось.

Помогите пожалуйста с заполнением array in 2-nd VC от button-click-action in 1-st VC

Обновление:

В SecondViewController.swift у меня есть этот код:

var music: [String] = ["test"]

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    return music.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "mycell")
    cell.textLabel!.text = music[indexPath.row]

    return cell
}

person SwiftStudier    schedule 14.08.2015    source источник


Ответы (2)


Создайте и заполните массив на вашем первом контроллере представления. Затем объявите массив той же структуры на втором контроллере представления. Затем заполните его в segue.

VC1:

    var music : [String] = ["Song1", "song2", "Song3"]

    dispatch_sync(dispatch_get_main_queue(), { () -> Void in

                            let storyboard = UIStoryboard(name: "Main", bundle: nil)
                            let controller = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController

                            controller.music2 = self.music

                            self.presentViewController(controller, animated: true, completion: nil)
                        })

VC2:

    import UIKit

        class audioList: UIViewController {
        var music2 : [String] 

        viewDidLoad()
        {

        }
}
person TheNiers    schedule 14.08.2015

person    schedule
comment
Жаль, но это тоже не работает. Я обновил свой пост кодом формы 2-го VC, возможно, что-то не так с печатью данных в tableView. Но после открытия 2-ВК вижу только тест - person SwiftStudier; 14.08.2015
comment
Можете ли вы загрузить свой проект? - person Chris; 14.08.2015