Ios Swift:如何将外部阵列加载到我的UITableView
我正在学习Swift,我有我在目标C中使用的模式,但不知道如何在这里使用。 我有带TableView的UIViewController。当我把我的数组放进去的时候,我工作的很好。但根据MVC的说法,我想将包含数据的数组移动到另一个类。我不知道怎么做。我尝试的一切都不起作用。 谢谢大家! 我的代码,如何将表格移出:Ios Swift:如何将外部阵列加载到我的UITableView,ios,arrays,uitableview,swift,Ios,Arrays,Uitableview,Swift,我正在学习Swift,我有我在目标C中使用的模式,但不知道如何在这里使用。 我有带TableView的UIViewController。当我把我的数组放进去的时候,我工作的很好。但根据MVC的说法,我想将包含数据的数组移动到另一个类。我不知道怎么做。我尝试的一切都不起作用。 谢谢大家! 我的代码,如何将表格移出: import UIKit class MyViewController: UIViewController, UITableViewDataSource, UITableViewDel
import UIKit
class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
//temp table data
let tableDS = ["fdf", "dfd"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableView.delegate = self
tableView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableDS.count
}
let textCellIdentifier = "TableViewCell"
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: MyCell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as MyCell
let row = indexPath.row
cell.dayLabel.text = tableDS[row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
let row = indexPath.row
println(tableDS[row])
}
}
这应该行得通。
如果要使用MVC模式,请创建一个新的单例类,在那里创建数组,然后创建一个返回数组的方法 首先需要用空数组初始化表视图。在下面的代码示例中,当您从另一个视图控制器加载MyViewController时,您可以传递数据,并将
let tableDS=[“fdf”,“dfd”]
更改为var tableDS=[“fdf”,“dfd”]
。let用于常量变量
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "YourMyViewControllerSequeId" {
let myViewController = segue.destinationViewController as MyViewController
var myArrayToPass = ["learn swift", "or get a life"];
myViewController.tableDS = myArrayToPass
myViewController.tableView.reloadData()
}
}
在表视图的MVC设计模式中,表视图是视图对象。控制器是视图控制器 模型是您用来存储数据的任何东西 控制器对象充当模型和视图之间的中介 对于简单的表视图,模型对象可以像数组一样简单。数组是模型的。因此,没有理由将数据存储在单独的对象中 如果您真的想使您的模型成为一个完全不同的对象,请创建一个新类。称之为MyTableViewModel。使MyTableViewModel类包含数据数组。还要使MyTableViewModel符合UITableViewDatasource协议。要做到这一点,您必须实现几个方法——特别是CellForRowatineXpath 现在在视图控制器中,创建一个MyTableViewModel对象作为视图控制器的强属性,在其中安装数组,并使其成为表视图的数据源 完成了
不过,同样,通常只将简单数组作为模型,让视图控制器通过在视图控制器中实现CellForRowatineXpath来为单元格提供服务。除了什么?里面是什么?发布的代码就是一个有效的例子吗?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "YourMyViewControllerSequeId" {
let myViewController = segue.destinationViewController as MyViewController
var myArrayToPass = ["learn swift", "or get a life"];
myViewController.tableDS = myArrayToPass
myViewController.tableView.reloadData()
}
}