在 Swift 中的 2 个视图控制器之间传递数据
Passing data between 2 view controllers in Swift
我有 2 个单独创建的视图控制器。它不是导航控制器或其他。我为他们每个人准备了 2 个文件:ViewController.swift
、SecondViewController.swift
。第二个 VC 被称为 audioList
在 1-st VC 我有一个按钮,点击它我打开第二个 VC 使用代码
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-st VC.
我读过 this and that 一个 post,其他人读过有关通过创建具有更改数据功能的协议来实现它的信息,尝试了很多 segues,它们的执行和 prepareFor 功能 - 但是什么都没用。
请帮我从 button-click-action in 1-st VC
填写 array in 2-nd 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
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
controller.music = ["my", "data"]
self.presentViewController(controller, animated: true, completion: nil)
在您的第一个视图控制器上创建并填充一个数组。
然后在第二个视图控制器上声明一个相同结构的数组。然后在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()
{
}
}
我有 2 个单独创建的视图控制器。它不是导航控制器或其他。我为他们每个人准备了 2 个文件:ViewController.swift
、SecondViewController.swift
。第二个 VC 被称为 audioList
在 1-st VC 我有一个按钮,点击它我打开第二个 VC 使用代码
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-st VC.
我读过 this and that 一个 post,其他人读过有关通过创建具有更改数据功能的协议来实现它的信息,尝试了很多 segues,它们的执行和 prepareFor 功能 - 但是什么都没用。
请帮我从 button-click-action in 1-st VC
array in 2-nd 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
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
controller.music = ["my", "data"]
self.presentViewController(controller, animated: true, completion: nil)
在您的第一个视图控制器上创建并填充一个数组。 然后在第二个视图控制器上声明一个相同结构的数组。然后在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()
{
}
}