2015-08-07 3 views
0

Я создал UITableView, содержащий 10 элементов, каждый из которых имеет UIImageView, прикрепленное к ним с помощью авто-макет enter image description hereUIImage не появляется в прототипе клетках в UITableView (Swift)

таблицы заполняется в моем BackTableViewController самыми код:

TableArray = ["Home Page", "Membership Card", "Recent News", "Fitness Schedule", "Training Log", "Pool Lap Calculator", "Martial Arts Schedule", "Pool Schedule", "Comments", "Acknowledgements"] 

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

Благодаря

Edit: BackTableViewController

импорт UIKit

класс BackTableViewController: UITableViewController {

var TableArray = [String]() 

var ImageArray = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    TableArray = ["Home Page", "Membership Card", "Recent News", "Fitness Schedule", "Training Log", "Pool Lap Calculator", "Martial Arts Schedule", "Pool Schedule", "Comments", "Acknowledgements"] 

    ImageArray = ["home-50.png","credit_card-50.png","info-50.png","math-50.png","news-50.png","report_card-50.png","weightlift-50.png"] 

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

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

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

    var cell = tableView.dequeueReusableCellWithIdentifier(TableArray[indexPath.row], forIndexPath: indexPath) as! UITableViewCell 

    cell.textLabel?.text = TableArray[indexPath.row] 

    return cell 

} 
} 
+0

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

+0

Источник данных и делегат подключены для всего вида таблицы. Кроме того, идентификаторы соты предоставляются для каждой ячейки, соответствующей массиву, установленному в моем BackTableViewController. –

+0

... эти изображения отображаются в таблице до тех пор, пока не будет выбрана ячейка. Что это значит? –

ответ

3

Вам понадобится только один прототип ячейки с идентификатором повторного использования. Подсказка находится в названии «прототип». Думайте о них как о схемах, на которых все ячейки основаны.

В своем классе вида контроллера (который должен быть UITableViewDelegate, если это UITableViewContoller) можно указать количество строк, с помощью этого метода:

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

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

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

    //We create a cell from our prototype that we gave an identifier to in our storyborad. 
    let cell = tableView.dequeueReusableCellWithIdentifier("ItemCell") as! UITableViewCell 

    //Create a single instance of an item from our items array. we use the indexpath.row that was passed into this method as the index for the array. 
    let item = yourArray[indexPath.row] 

    //You can go into your array and get the right info out regarding this row by using the indexPath.row 
    cell.textLabel?.text = item 
    cell.imageView?.image = UIImage(named: item) 

    //Finally this method returns the correctly configured cell fro the tableview to display. 
    return cell 
} 

Надеюсь, это поможет.

+0

Кажется, это путь ... и я правильно настроил его с помощью вашего метода, но теперь я получаю «фатальную ошибку: индекс массива вне диапазона» при запуске моего приложения. –

+1

Nevermind dude, я испортил код, а затем забыл учитывать тот факт, что у меня не было достаточного количества изображений в соответствии с моими ячейками, и, следовательно, была ошибка вне диапазона. Спасибо за помощь! –

0

Попробуйте дать "Центр х" ограничение вместо ведущего пространства для представления изображений, и вы должны также ограничить его ширину и высоту.

+0

Это ничего не делает к сожалению ... Изображения все еще не видны, пока ячейка не будет выбрана. –

0

Вам необходимо установить идентификатор соты с помощью Interface Builder в инспекторе Атрибуты:

enter image description here

Тогда в вашем cellForRowAtIndexPath вам нужно передать идентификатор соты, как вы установили ранее, что-то вроде этого:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    // set the identifier cell, not TableArray[indexPath.row] 
    var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell 
    cell.textLabel?.text = TableArray[indexPath.row] 
    return cell 
} 

Я надеюсь, что это поможет вам.

Смежные вопросы