2016-09-19 156 views
0

我創建了一個餐廳類,並使所有連接來顯示單元格,但是當我點擊運行時,它不顯示我創建的所有插座。表視圖不顯示細胞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

回答

1

在故事板您在「漢堡餐廳」臺控制器鏈接到:

ResturantTableTableViewController 

就像你的文件「ResturantTableTableViewController.swift」,但這個文件中,你已經宣佈它爲:

class RestaurantTableViewController: UITableViewController { 

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

將文件名和鏈接故事板更改爲相同的類。或者您可以將「ResturantTableTableViewController.swift」文件中的類名更改爲與文件名(「ResturantTableTableViewController」)相同的名稱。

enter image description here

enter image description here

+0

爲什麼downvote?我下載了你的項目並自己嘗試了一下。當我更改故事板中的課程時,這些單元格顯示出來。 – LaStrada

0

嘿,我想通了您的問題,在Interface Builder你自定義的類設置,當你需要一個RestaurantTableTableView將其設置爲您的實際文件名稱RestaurantTableViewController