【问题标题】:TableView With Sections Template带有部分模板的 TableView
【发布时间】:2017-02-10 11:07:45
【问题描述】:

我关注了this Tutorial

而且效果很好。现在,如果我尝试从 JSON 中获取部分数据,这也可以正常工作,但是我在显示所有内容时遇到问题。

这就是我所做的:

//  TestVC.swift
//  WinterdienstTest
//
//  Created by zwipf on 09.02.17.
//  Copyright © 2017 Squirrel. All rights reserved.
//

import UIKit

class TestVC: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!

let sections: [String] = ["Tour 1", "Tour 2", "Tour 3"]
var adressTour1: [String] = []
var adressTour2: [String] = []
var adressTour3: [String] = []

var adressTourALL: [Int: [String]] = [:]


override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self

    // URL abrufen
    let url = NSURL(string: "https://api.myjson.com/bins/mml65")
    let request = NSMutableURLRequest(url: url! as URL)
    let task = URLSession.shared.dataTask(with: request as URLRequest) { data,response,error in

    // JSON parsen und Ergebins in eine Liste von assoziativen Arrays wandeln
    let responseString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any]


    // Daten auslesen
    if let Liegenschaften = responseString["Liegenschaften"] as? [AnyObject] {

        for liegenschaft in Liegenschaften {

            if let Winterdienst = liegenschaft["Winterdienst"] as? [AnyObject] {

                for winterdienst in Winterdienst {

                    let tour = winterdienst["Tour"] as! String

                    if tour == "1" {

                        let adresse = liegenschaft["Adresse"] as! String
                        self.adressTour1.append(adresse)
                    }
                    if tour == "2" {

                        let adresse = liegenschaft["Adresse"] as! String
                        self.adressTour2.append(adresse)
                    }
                    if tour == "3" {

                        let adresse = liegenschaft["Adresse"] as! String
                        self.adressTour3.append(adresse)
                    }
                }
            }
        }
    }

    self.adressTourALL = [0:self.adressTour1, 1:self.adressTour2, 2:self.adressTour3]


    }

    // UI-Darstellung aktualisieren
    //OperationQueue.main.addOperation {
      //  self.tableView.reloadData()
    //}

    // task.resume()

    print(self.adressTourALL)


}



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return adressTourALL.count
}

func numberOfSections(in tableView: UITableView) -> Int {
    return sections.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    var cell = tableView.dequeueReusableCell(withIdentifier: "cell")

    if cell == nil {
        cell = UITableViewCell(style: .default, reuseIdentifier: "cell");
    }

    print(adressTourALL[indexPath.section]![indexPath.row])
    cell!.textLabel!.text = adressTourALL[indexPath.section]![indexPath.row]

    return cell!
}

}

希望有人可以帮助我!

【问题讨论】:

    标签: uitableview swift3 xcode8


    【解决方案1】:

    除其他外,您需要将其放入您的代码中:

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        switch section{
        case 0:
            return self.adressTour1.count
        case 1:
            return self.adressTour2.count
        case 2:
            return self.adressTour2.count
        default:
            return 1
    }
    

    【讨论】:

    • 这不是正确的答案..当我手动将一些字符串放入 adressTour1 - adressTour3 数组时它可以工作.. 但它不会将新值附加到数组..?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多