Ответ 1
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 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)
}
Сообщите мне, если вам нужна другая информация об этом