Swift:如何在tableview中传递数组项

时间:2015-01-07 12:14:08

标签: ios arrays swift xcode6 tableview

我正在尝试将数组值传递给tableview。 @ // 4 println(items)它打印一个带有值的数组到我的控制台。我希望将这些结果传递给tableview。 tableview正在运行,但从var list: [String] = ...

获取它的价值

如何获取println(items)中的var list: [String] = ...

谢谢!



import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var tableView: UITableView!
    var list: [String] = ["Row One", "Row Two", "Row Three" , "Row Four", "Row Five"]

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

        var results = "today"
        var subItem = "movie"

        // hier moet de opegslagen bioscoop komen die door de gebruiker is opgeslagen als keuze
        var cinemaFilter = "Pathé Arena"

        // Get the Cinema's from scraper and SwiftyJSON
        DataManager.getCinemaDataFromScraperWithSuccess { (ScraperData) -> Void in
            let json = JSON(data: ScraperData)
            if let itemName = json["results"][results][0][subItem]["text"].stringValue {
                println("Film resultaten:")
            }
            //1
            if let itemArray = json["results"][results].arrayValue {
                //2
                var items = [itemModel]()

                //3
                for itemDict in itemArray {
                    var itemName: String? = itemDict[subItem]["text"].stringValue
                    var itemTime: String? = itemDict["time"]["text"].stringValue
                    var itemCinema: String? = itemDict["cinema"]["text"].stringValue

                    if itemCinema == cinemaFilter {
                        var item = itemModel(name: itemName, time: itemTime, cinema: itemCinema )
                        items.append(item)
                    } else {
                        //println("is niet de ingestelde bioscoop")
                    }

                }

                //4
                println(items)
            }
        }
    }
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.list.count;
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

        cell.textLabel?.text = self.list[indexPath.row]

        return cell
    }

    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
        println("You selected cell #\(indexPath.row)!")
    }

}

2 个答案:

答案 0 :(得分:0)

使items成为视图控制器的实例变量而不是局部变量,在数据源方法中使用它,并摆脱list

然后,您需要确定要在item中显示cell.textLabel?.text的哪一部分,名称,时间,电影或某种组合。

答案 1 :(得分:0)

而不是func中的var items = [itemModel]()将它放在类lavel上,所以它是一个实例。然后改变

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.items.count;
}

和相应的单元格方法使用项目。