带有部分模板的 TableView
Posted
技术标签:
【中文标题】带有部分模板的 TableView【英文标题】:TableView With Sections Template 【发布时间】: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!
希望有人可以帮助我!
【问题讨论】:
【参考方案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 数组时它可以工作.. 但它不会将新值附加到数组..?以上是关于带有部分模板的 TableView的主要内容,如果未能解决你的问题,请参考以下文章