Swift работает точно так же, как Obj-C, но переработан на новом языке. У меня не так много информации из вашего сообщения, но давайте дадим имя каждому TableViewController, чтобы помочь с моим объяснением.
HomeTableViewController (это скриншот у вас есть выше)
PlayerTableViewController (это экран плеера вы хотите поехать в)
С учетом сказанного, в PlayerTableViewController вам нужно иметь переменная, которая будет хранить переданные данные. Только под объявлением класса есть что-то вроде этого (если вы собираетесь хранить-структуру как единый объект, а не массив:.
class PlayerTableViewController: UITableViewController {
var programVar : Program?
//the rest of the class methods....
После этого есть два способа вы можете отправить данные на новый TableViewController
1) Использование prepareForSegue
в нижней части HomeTableViewController вы будете использовать методы prepareForSegue для передачи данных. Вот пример кода, который вы будете использовать:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
// Create a variable that you want to send
var newProgramVar = Program(category: "Some", name: "Text")
// Create a new variable to store the instance of PlayerTableViewController
let destinationVC = segue.destinationViewController as PlayerTableViewController
destinationVC.programVar = newProgramVar
}
}
После PlayerTableViewController загрузила переменная будет уже установлен и использовать
2) Использование didSelectRowAtIndexPath
Если конкретные данные должны отправляться на основе выбранной ячейки, вы можете использовать didSelectRowAtIndexPath. Чтобы это сработало, вам нужно дать вашему segue имя в представлении раскадровки (дайте мне знать, если вам нужно знать, как это сделать).
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Create a variable that you want to send based on the destination view controller
// You can get a reference to the data by using indexPath shown below
let selectedProgram = programy[indexPath.row]
// Create an instance of PlayerTableViewController and pass the variable
let destinationVC = PlayerTableViewController()
destinationVC.programVar = selectedProgram
// Let's assume that the segue name is called playerSegue
// This will perform the segue and pre-load the variable for you to use
destinationVC.performSegueWithIdentifier("playerSegue", sender: self)
}
Позвольте мне знать, если вам нужна любая другая информация об этом
, но я думаю, что это в Objective-C, и мне нужно его быстрым. – patrikbelis
Возможный дубликат [Передать переменные из одного ViewController в другой в Swift] (http://stackoverflow.com/questions/24044108/pass-variables-from-one-viewcontroller-to-another-in-swift) – Paulw11