2015-12-28 2 views
0
import UIKit 

class NewOrdersViewControllers: UIViewController,UITableViewDelegate,UITableViewDataSource { 

    var items = ["Chilli and Lemon"] 
    @IBOutlet var tableView:UITableView! 

    @IBOutlet weak var lblRestaurantNames: UILabel! 
    @IBOutlet weak var mapView: UIButton! 

    var cellIdentifier = "cell" 

    init() { 
     super.init(nibName : "NewOrdersViewControllers", bundle:nil) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let nib = UINib(nibName: "tableCell", bundle: nil) 

     self.tableView.registerNib(nib, forCellReuseIdentifier: cellIdentifier) 

     self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier) 

     tableView.delegate = self 

     tableView.dataSource = self 

     // Do any additional setup after loading the view. 
    } 

    @IBAction func mapPush(sender: AnyObject) { 


     let mapVC = MapViewController() 

     self.navigationController?.pushViewController(mapVC, animated: true) 
    } 
    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell:tableCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! tableCell 

     //cell.textLabel?.text = self.items[indexPath.row] as! String 

     cell.RestaurantLbl.text = self.items[indexPath.row] 

     return cell 

    } 

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 

     print("You selected cell #\(indexPath.row)!") 
    } 

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

     return 100 
    } 

Я сделал это с помощью xib и отобразил следующую ошибку.Я не могу загрузить ячейку вида таблицы в виде таблицы

Не удалось бросить значение типа 'UITableViewCell' (0x1fe82bc)

+1

, пожалуйста, введите имена классов, начиная с буквы верхнего регистра: 'TableCell'. Правильно ли вы настроили ячейку с правильным идентификатором в раскадровке. – luk2302

+0

где определяются cellIdentifier? – nikhil84

+0

'tableCell' - ваш класс ячейки таблицы? –

ответ

1

В вашем методе viewDidLoad() регистрации 2 различных типов клеток для одной и той же reuseIdentifier, так что последний один (UITableViewCell) вступает в силу. Вот почему в tableView:cellForRowAtIndexPath: ячейки, находящиеся в очереди, также имеют класс UITableViewCell и не могут быть добавлены в ваш собственный класс ячеек.

Попробуйте удалить строку:

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier) 

это должно исправить вашу проблему и пусть tableView DEQUEUE правильные клетки.

+0

Я пробовал, но он показывает следующее сообщение об ошибке - этот класс не является ключевым значением, совместимым с кодировкой для ключевого представления. ' @maxkonolov –

+0

@RakeshMohan убедитесь, что ваш xib настроен правильно: корневой объект должен быть 'UITableViewCell' с его' class' установленным вашим пользовательским подклассом. Чтобы быть на 100% уверенным, вы можете попробовать создать новый класс Cocoa Touch, сделав его подклассом UITableViewCell и проверив вариант «Также создайте XIB-файл». Таким образом, Xcode подключит все, что вам нужно. – maxkonovalov