【问题标题】:Swift: How to pass array items in tableviewSwift:如何在表格视图中传递数组项
【发布时间】:2015-01-07 12:14:08
【问题描述】:

我正在尝试将数组值传递给 tableview。 @ //4 println(items) 它将带有值的数组打印到我的控制台。我想将这些结果传递给表格视图。表格视图正在工作,但从 var list: [String] = ... 获得它的价值

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

谢谢!!



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)!")
    }
    
}

【问题讨论】:

  • 我不知道你想做什么。你在摆弄一些itemArray,但你的表格视图从list获取数据
  • 我想要tableview中的itemArray数据。 tableview 从列表中获取它的数据,所以我想我需要以某种方式将 itemsArray 项传递到列表中。

标签: ios arrays swift xcode6 tableview


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    而不是 func 内部的var items = [itemModel]() 将其放在类 lavel 上,因此它是一个实例。然后改变

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

    以及相应的单元格方法来使用项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多