表视图不显示细胞Swift

问题描述:

我创建了一个餐厅类,并使所有连接来显示单元格,但是当我点击运行时,它不显示我创建的所有插座。表视图不显示细胞Swift

这里是我的代码:

import UIKit 

class RestaurantTableViewController: UITableViewController { 

    var restaurants:[Resturant] = [ 
     Resturant(name: "Hardees", type: "Burger", location: "Many", image: "Hardees.jpg", isVisited: false), Resturant(name: "Shake Shack", type: "Burger", location: "Gulf Mall", image: "shakeshack.jpg", isVisited: false), Resturant(name: "Burgery", type: "Burger", location: "Gulf Mall", image: "shakeshack.jpg", isVisited: false), Resturant(name: "Dairy Queen", type: "Burger", location: "Gulf Mall", image: "shakeshack.jpg", isVisited: false), Resturant(name: "Elevation Burger", type: "Burger", location: "Gulf Mall", image: "shakeshack.jpg", isVisited: false), Resturant(name: "Fat Burger", type: "Burger", location: "Gulf Mall", image: "shakeshack.jpg", isVisited: false) 
    ] 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Uncomment the following line to preserve selection between presentations 
     // self.clearsSelectionOnViewWillAppear = false 

     // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
     // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Table view data source 

    override func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

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


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

     let cellIdentifier = "Cell" 
     let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! CustomTableViewCell 

     // Configure the cell... 
     cell.nameLabel.text = restaurants[indexPath.row].name 
     cell.thumbnailImageView.image = UIImage(named: restaurants[indexPath.row].image) 
     cell.locationLabel.text = restaurants[indexPath.row].location 
     cell.typeLabel.text = restaurants[indexPath.row].type 

     cell.accessoryType = restaurants[indexPath.row].isVisited ? .checkmark : .none 

     return cell 
    } 




    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

     if editingStyle == .delete { 
      // Delete the row from the data source 
      restaurants.remove(at: indexPath.row) 
     } 

     tableView.deleteRows(at: [indexPath], with: .fade) 
    } 

    override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { 

     // Social Sharing Button 
     let shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Share", handler: { (action, indexPath) -> Void in 

      let defaultText = "Just checking in at " + self.restaurants[indexPath.row].name 

      if let imageToShare = UIImage(named: self.restaurants[indexPath.row].image) { 
       let activityController = UIActivityViewController(activityItems: [defaultText, imageToShare], applicationActivities: nil) 
       self.present(activityController, animated: true, completion: nil) 
      } 
     }) 

     // Delete button 
     let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Delete",handler: { (action, indexPath) -> Void in 

      // Delete the row from the data source 
      self.restaurants.remove(at: indexPath.row) 

      self.tableView.deleteRows(at: [indexPath], with: .fade) 
     }) 

     shareAction.backgroundColor = UIColor(red: 48.0/255.0, green: 173.0/255.0, blue: 99.0/255.0, alpha: 1.0) 
     deleteAction.backgroundColor = UIColor(red: 202.0/255.0, green: 202.0/255.0, blue: 203.0/255.0, alpha: 1.0) 

     return [deleteAction, shareAction] 
    } 

    // MARK: - 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "showRestaurantDetail" { 
      if let indexPath = tableView.indexPathForSelectedRow { 
       let destinationController = segue.destination as! ResturantDetailViewController 
       destinationController.resturant = restaurants[indexPath.row] 
      } 
     } 
    } 
} 

这里是我的githu回购

my github repo

+0

难道你设置的TableView委托?如果在调试中运行,是否将代码放入cellForRowAt indexPath中执行? – lubilis

+0

tableView.reloadData()? – Suhaib

在故事板您在“汉堡餐厅”台控制器链接到:

ResturantTableTableViewController 

就像你的文件“ResturantTableTableViewController.swift”,但这个文件中,你已经宣布它为:

class RestaurantTableViewController: UITableViewController { 

故事板忽略文件名,但使用您在文件中声明的名称。

将文件名和链接故事板更改为相同的类。或者您可以将“ResturantTableTableViewController.swift”文件中的类名更改为与文件名(“ResturantTableTableViewController”)相同的名称。

enter image description here

enter image description here

+0

为什么downvote?我下载了你的项目并自己尝试了一下。当我更改故事板中的课程时,这些单元格显示出来。 – LaStrada

嘿,我想通了您的问题,在Interface Builder你自定义的类设置,当你需要一个RestaurantTableTableView将其设置为您的实际文件名称RestaurantTableViewController