2016-04-14 139 views
0

我有一個接近工作的代碼,但Xcode抱怨一行。由於我的項目中有一些其他代碼,我不認爲這很重要。UITableView未聲明類型Cell?

我有這樣一段代碼:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! SpecialCell 
    let maindata = values[indexPath.row] 
    cell.username.text = maindata["Username"] as? String 
    cell.password.text = maindata["Password"] as? String 
    cell.num.text = maindata["FavoriteNumber"] as? String 
    cell.info.text = maindata["Info"] as? String 
    return cell; 
} 

我得到以下錯誤:「未申報類型‘SpecialCell’的使用」。 不幸的是,我不知道如何處理SpecialCell。我認爲這只是我忘了的小事。我搜索了一個多小時,但我不明白。 如果我在提到的行中改變了某些內容,我所有的cell.username ....語句都變成了紅色。

我所做的只是創建一個新的表視圖並將其鏈接到我的代碼。所以我得到這個

@IBOutlet weak var tableView: UITableView! 

我必須改變或設置一個標識符或類似的東西嗎? 這個項目的想法是,用JSON解析數據並將其寫入此表。解析代碼是這樣的:

func parseJson() { 
    let url = NSURL(string: "http://an_url.com") 
    let data = NSData(contentsOfURL: url!) 
    values = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray 
    tableView.reloadData() 
} 

但是我覺得在這裏這個專題沒關係。 如果您對我有一些提示,那將會很棒。

+0

更改它與UITableViewCell,讓我知道它是否工作 –

+0

謝謝。我之前嘗試過,因爲代碼完成建議這樣做。效果也是,我所有的cell.username ...語句都變紅了。 – plategt

+0

這可能是因爲你有一個自定義單元,有一個自定義類,但是你沒有在XCode IDE中給它一個合適的名字:在你的故事板中選擇你的單元格,打開屬性檢查器並設置標識符(移除「單元格」和把SpecialCell) –

回答

0

可以聲明一個自定義單元格這樣

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SpecialCell") 

或者

self.tableView.registerClass(SpecialCell.classForCoder(), forCellReuseIdentifier: "SpecialCell") 

如果它是一個自定義單元格。告訴我們關於這個SpecialCell的更多信息

0

感謝您的提示。 隨着我進一步瞭解,我認識到,正如Andrew McKinley所說,SpecialCell是定製單元的定義。解決方案是創建一個SpecialCell類並定義其中的單元格。 有一次,我已經做到了這一點,我堅持另一點。但那是另一個話題。

再次感謝。