UIImage没有出现在UITableView(Swift)的原型单元格中

时间:2015-08-07 19:12:35

标签: swift uitableview ios8 uiimageview autolayout

我创建了一个包含UITableView的10个单元格,每个单元格都使用自动布局enter image description here

附加了UIImageView

该表由我的BackTableViewController填充,代码为:

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

问题是,在运行时选择单元格之前,这些图像都不会出现在表格中。我不知道为什么这是......任何人?

由于

编辑:BackTableViewController

导入UIKit

class 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

}
}

3 个答案:

答案 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
}

希望这会有所帮助。

答案 1 :(得分:0)

尝试给出“中心x”约束而不是图像视图的前导空间,你也应该给它宽度和高度约束。

答案 2 :(得分:0)

您需要在Attributes Inspector中使用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
}

我希望这对你有所帮助。