2015-11-08 80 views
0

我我的自定義類對象綁定到一個表視圖,但它顯示我什麼自定義對象的tableview迅速

class car{ 
var carName:String = "" 
var carModel:String = "" 
var carPic:String = "" 
} 

在我的控制器

var cars = [car](); 

填充對象與coredata在viewDidLoad中()

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! SearchTableViewCell; 
       let row = cars[indexPath.row]; 
     print(carName) 

     cell.carNameLabel.text = row.carName 
     return cell; 
    } 

我能夠正確地看到carName在我的控制檯,但是當我看着認爲其顯示我沒什麼它是空的,但我能夠在選擇行事件上執行我所有的操作。

我認爲這可能是由於約束,但如果我綁定這個表視圖與一些數組,它顯示我正確的UI上的數據。

+0

它看起來像SearchTableVIewCell的內容將需要有任何想法,爲什麼這是行不通的。你可以補充一下嗎? –

+0

向我們展示您如何構建汽車表。即如果響應網絡請求,當你完成填充數組時,你是否調用'tableView.reloadData()'?另外,順便說一下,你一般都想遵循Cocoa命名約定,並用大寫字母開始類名(例如'Car')。對於var i = 0, – Rob

+0

;我<10; i ++ {var_type = car(); car.carName =「Name」+ String(i) car.carModel =「測試」 self.cars.append(car); } self.tableView.reloadData();即使通過這種方式綁定也無法看到UI上的任何內容。 –

回答

0

您打印到控制檯的內容似乎不正確。

您的陳述print(carName)未訪問您的cars數組。

嘗試添加print(row.carName)來調試您的問題。

如果您收到在控制檯中正確的輸出則意味着

cell.carNameLabel.text = carName 

應該正確的值添加到您的標籤。

但是,由於我無法看到carName來自您的cars陣列中的數據,所以根據您顯示的代碼,它不正確。

你也應該顯示類似

class SearchTableViewCell: UITableViewCell { 
    @IBOutlet var carNameLabel: UILabel! 
} 
在你的代碼

,所以我們可以肯定的是,標籤存在。

此外,作爲關於命名的提示,類名應以大寫字母開頭。這是蘋果和大多數iOS開發者實踐的慣例。

+0

對不起,打印錯誤,我按照你寫的相同的方式,當我打印row.carName打印當前名稱在調試器中,但仍然無法看到我的tableview中的任何東西。 –

+0

如果你像'cell.carNameLabel.text =「某車名」''硬編碼字符串會發生什麼?這將決定您的標籤是否可以顯示文字。 – Daniel