2016-07-21 60 views
0

我很新的飛速發展,我工作的一個蘋果提供迅速教程this section。我創建了嵌套在表格單元中的標籤,圖像和自定義視圖的出口。當我運行我得到這個錯誤這個類不是鍵值編碼兼容的關鍵

2016-07-20 23:16:11.110 FoodTracker [8446:3016336] Interface Builder文件中的未知類MealTableViewCell。 2016年7月20日23:16:11.124 FoodTracker [8446:3016336] *終止應用程序由於未捕獲的異常 'NSUnknownKeyException',原因:「[setValue方法:forUndefinedKey:]:這個類不是密鑰值編碼兼容的密鑰名稱標籤「。 *第一擲調用堆棧:

沒有重複的網點,我相信我的表視圖控制器使用的cellIdentifier是正確的。 我的表格單元格

import UIKit 

class MealTableViewCell: UITableViewCell { 

// MARK: Properties 
@IBOutlet weak var nameLabel: UILabel! 
@IBOutlet weak var photoImageView: UIImageView! 
@IBOutlet weak var ratingControl: RatingControl! 

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

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 
}} 

我的表視圖控制器

import UIKit 

class MealTableViewController: UITableViewController { 
// MARK: Properties 

var meals = [Meal]() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    loadSampleMeals() 
} 

func loadSampleMeals() { 
    let photo1 = UIImage(named: "meal1")! 
    let meal1 = Meal(name: "Caprese Salad", photo: photo1, rating: 4)! 

    let photo2 = UIImage(named: "meal2")! 
    let meal2 = Meal(name: "Chicken and Potatoes", photo: photo2, rating: 5)! 

    let photo3 = UIImage(named: "meal3")! 
    let meal3 = Meal(name: "Pasta with Meatballs", photo: photo3, rating: 3)! 

    meals += [meal1, meal2, meal3] 
} 

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

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

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    // Table view cells are reused and should be dequeued using a cell identifier. 
    let cellIdentifier = "MealTableViewCell" 
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MealTableViewCell 

    // Fetches the appropriate meal for the data source layout. 
    let meal = meals[indexPath.row] 

    cell.nameLabel.text = meal.name 
    cell.photoImageView.image = meal.photo 
    cell.ratingControl.rating = meal.rating 

    return cell 
}} 

謝謝!

+0

有你在故事板設置類RatingControl的? –

回答

0

首先,你必須從你的界面生成器鏈接您UITableViewMealTableViewController類(Ctrl + drag

然後,在你MealTableViewController類的viewDidLoad方法,您必須在自定義單元格類註冊到表視圖:

self.tableView.registerClass(MealTableViewCell.self, forCellReuseIdentifier: "MealTableViewCell")

+0

感謝您的評論,我試過這個,現在當我調用「dequeueReusableCellWithIdentifier」時,我的單元格正在返回,但其屬性爲零,我無法弄清楚原因。他們的網點設置正確 –

1

它非常簡單,故事板無法找到名爲「nameLabel」出口。因此,要麼通過該名稱創建標籤,要麼從故事板中刪除創建的標籤的引用。

下面是步驟

只需單擊故事板,然後選擇最後一個選項卡。 enter image description here

現在搜索的nameLabel並點擊交叉斷開。 所有最好的;)

4

檢查你的故事板文件,一個破碎的插座連接。找到你的控制器和control - 點擊它的筆尖上方的黃色圓圈打開動作和插座彈出。您應該看到一個帶有黃色警告標誌的插座nameLabel。將它重新連接到控制器的文件,或者如果它重複則將其刪除。 enter image description here

相關問題