TableView仅显示单击时的内容

时间:2016-06-04 18:37:24

标签: ios swift uitableview tableview

我正在制作一个TableView来展示我们镇上的商店及其类别。我在桌面视图中显示商店时遇到问题:首先,第一个商店不显示,其次,商店只有在点击时才会显示。您可以找到问题的视频here

表格视图的代码:

import UIKit

class MasterTableViewController: UITableViewController {

// MARK: - Properties
var detailViewController: DetailViewController? = nil
var winkels = [Winkel]()

// MARK: - View Setup
override func viewDidLoad() {
    super.viewDidLoad()

    winkels = [
        Winkel(category:"Literature", name:"Standaard"),
        Winkel(category:"Literature", name:"Acco"),
        Winkel(category:"Clothing", name:"H&M"),
        Winkel(category:"Clothing", name:"C&A"),
        Winkel(category:"Clothing", name:"Patio"),
        Winkel(category:"Restaurants", name:"De 46"),
        Winkel(category:"Restaurants", name:"Het hoekske"),
        Winkel(category:"Supermarkets", name:"Carrefour"),
        Winkel(category:"Supermarkets", name:"Colruyt")
    ]

    if let splitViewController = splitViewController {
        let controllers = splitViewController.viewControllers
        detailViewController = (controllers[controllers.count - 1] as! UINavigationController).topViewController as? DetailViewController
    }
}

override func viewWillAppear(animated: Bool) {
    clearsSelectionOnViewWillAppear = splitViewController!.collapsed
    super.viewWillAppear(animated)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

// MARK: - Table View
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return winkels.count
}

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


    let winkel = winkels[indexPath.row]
    cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
    cell.textLabel!.text = winkel.name
    cell.detailTextLabel?.text = winkel.category
    return cell
}

// MARK: - Segues
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showDetail" {
        if let indexPath = tableView.indexPathForSelectedRow {
            let winkel = winkels[indexPath.row]
            let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
            controller.detailWinkel = winkel
            controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
            controller.navigationItem.leftItemsSupplementBackButton = true
        }
    }
 }

}

有没有人知道如何解决这些问题?提前谢谢!

2 个答案:

答案 0 :(得分:3)

删除线路
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")因为你已经有了 var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

答案 1 :(得分:0)

viewDidLoad功能

的末尾添加此行
self.tableView.reloadData()