2015-11-08 3 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 в моей консоли правильно, но когда я смотрю в поле зрения его показать мне Nothin g его пустым, но я могу выполнить все свои действия в событии строки выбора.

Я думал, что это может быть связано с ограничениями, но если я привяжу это представление таблицы к некоторому массиву, это покажет мне правильные данные в пользовательском интерфейсе.

+0

Похоже, что содержимое SearchTableVIewCell понадобится, чтобы понять, почему это не работает. Не могли бы вы добавить его? –

+0

Покажите нам, как вы строите стол автомобилей. То есть если в ответ на запрос сети вы вызываете 'tableView.reloadData()' когда вы закончите заполнение массива? Кроме того, кстати, вы, как правило, хотели бы следовать правилам именования какао и начинать имена классов с прописными буквами (например, «Автомобиль»). – Rob

+0

для var i = 0; i <10; i ++ { var car = car();car.carName = "Name" + String (i) car.carModel = "Тестирование" self.cars.append (автомобиль); } self.tableView.reloadData(); даже привязка этого способа не может ничего увидеть в пользовательском интерфейсе. –

ответ

0

То, что вы печатаете на консоли, кажется неправильным.

Ваше заявление print(carName) не имеет доступа к вашему массиву cars.

Попробуйте добавить print(row.carName), чтобы устранить вашу проблему.

Если вы получаете правильный вывод в консоли, то это означает, что

cell.carNameLabel.text = carName 

следует добавить правильное значение для этикетки.

Однако, это не кажется правильным для меня на основе кода, который вы показываете, так как я не могу видеть carName как исходящий из данных в вашем массиве cars.

Вы также должны показать, что-то вроде

class SearchTableViewCell: UITableViewCell { 
    @IBOutlet var carNameLabel: UILabel! 
} 

в вашем коде, чтобы мы могли быть уверены, что метка существует.

Кроме того, в качестве подсказки об именах имена классов должны начинаться с буквы верхнего регистра. Это соглашение, практикуемое Apple и большинством разработчиков iOS.

+0

Извините за ошибку печати, я делаю так же, как вы написали, когда я печатаю row.carName печатает текущее имя в отладчике, но все еще не в состоянии видеть что-либо в моем представлении таблицы. –

+0

Что произойдет, если вы жестко задаете строку типа 'cell.carNameLabel.text =" какое-то название машины "?Это определит, может ли ваш ярлык отображать текст. – Daniel