Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:如何将外部阵列加载到我的UITableView_Ios_Arrays_Uitableview_Swift - Fatal编程技术网

Ios Swift:如何将外部阵列加载到我的UITableView

Ios Swift:如何将外部阵列加载到我的UITableView,ios,arrays,uitableview,swift,Ios,Arrays,Uitableview,Swift,我正在学习Swift,我有我在目标C中使用的模式,但不知道如何在这里使用。 我有带TableView的UIViewController。当我把我的数组放进去的时候,我工作的很好。但根据MVC的说法,我想将包含数据的数组移动到另一个类。我不知道怎么做。我尝试的一切都不起作用。 谢谢大家! 我的代码,如何将表格移出: import UIKit class MyViewController: UIViewController, UITableViewDataSource, UITableViewDel

我正在学习Swift,我有我在目标C中使用的模式,但不知道如何在这里使用。 我有带TableView的UIViewController。当我把我的数组放进去的时候,我工作的很好。但根据MVC的说法,我想将包含数据的数组移动到另一个类。我不知道怎么做。我尝试的一切都不起作用。 谢谢大家!

我的代码,如何将表格移出:

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()
    }
}