2016-09-19 4 views
0

Я создал класс ресторана и сделал все соединения для отображения ячеек, но когда я нажал кнопку запуска, он не отображает все созданные вами ролеты.Таблица View, не показывающая ячейки 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 делегат ли? если запустить в debug, является ли код в cellForRowAt indexPath выполненным? – lubilis

+0

tableView.reloadData()? – Suhaib

ответ

1

В раскадровке вы ссылаетесь на «Burger ресторан» контроллер табличный:

ResturantTableTableViewController 

Так же, как ваш файл «ResturantTableTableViewController.swift», но внутри этого файла, вы объявили как:

class RestaurantTableViewController: UITableViewController { 

Раскадровка игнорирует имя файла, но использует имя, которое вы указали в файле.

Измените имя файла и раскладку ссылок на один класс. Или вы можете изменить имя класса внутри файла «ResturantTableTableViewController.swift» так же, как имя файла («ResturantTableTableViewController»).

enter image description here

enter image description here

+0

Почему нисходящий? Я загрузил ваш проект и попробовал сам. Ячейки отображаются, когда я меняю класс в раскадровке. – LaStrada

0

Эй, я понял ваш вопрос, в интерфейсе строителя вы установили специальный класс к RestaurantTableTableView, когда вам нужно чтобы установить его для фактического имени файла RestaurantTableViewController.

Смежные вопросы