【问题标题】:xcode 7.3 reference icon from assets folder for prototype table view cell原型表视图单元的资产文件夹中的 xcode 7.3 参考图标
【发布时间】:2016-03-27 13:36:12
【问题描述】:

在带有 swift 的 Xcode 7 中,我尝试使用资产文件夹中的图标显示在普通原型 tableview 单元格的图标槽中。

我的代码编译并且应用程序运行良好,在表格中显示所有正确的行文本标题,但所有单元格都使用我(可能是愚蠢地)输入到原型表格单元格的属性检查器中的图标。

默认情况下,style=Basic 表格单元格在情节提要的标题左侧没有图标。但是...如果您在 image=MyAssetsIconName 的 assets 文件夹中添加图标图像的名称,UI 构建器会自动将 UIImageView 添加到表格行单元格的左端。当然,所有行都会显示您选择的图像。这是我的应用目前所做的。

但我想更改每一行的图标图像,以便任何行上的图像与我显示的文本行匹配。因此,我尝试在创建每个行单元格时为其分配一个新图像(来自资产文件夹)。我在将文本标题分配给单元格后立即进行了分配。

这是我的代码,运行良好(但不显示我想要的图像)。

class TsbReportsCell: UITableViewCell {

@IBOutlet weak var Title: UILabel!
@IBOutlet weak var Detail: UILabel!
@IBOutlet weak var Icon: UIImageView!
...
}

在表格视图控制器中:

In the table view controller class:

// define datasources
var reportnames = [String]()
var reportimages = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

     reportnames = ["Balance Report",
    "Routine Report",
    "Low Quality Report"]

    reportimages = ["enter.png",
    "exterior.png",
    "export.png"]
}

override func tableView(tableView:.... {
    // all this code works fine
    let cell = tableView.dequeueReusableCellWithIdentifier...
    let row = indexPath.row
    cell.Title.text = reportnames[row]

    // here are the lines that seem to have no effect at all
    let rowimage = UIImage(named: reportimages[row])
    cell.Icon = UIImageView(image: rowimage)

    return cell
}

任何想法我做错了什么?我在表格单元格行的属性中命名了一个图像,只是为了让 UI 构建器为我添加 imageview 占位符。但也许我永远不允许覆盖该图像,即使我可以为它创建一个出口。

这似乎是一个很简单的问题,但我搜索了至少 20 个帖子,网络,文档,我仍然找不到任何东西。谢谢

【问题讨论】:

    标签: xcode swift uitableview


    【解决方案1】:

    这很简单。你是说:

    cell.Icon = UIImageView(image: rowimage)
    

    但这并没有将此图像视图放入界面!它只是将其分配给单元格的属性。

    相反,您需要在单元格中有一个图像视图,并将单元格的Icon 属性的出口连接到该图像视图。因此,cell.Icon 是界面中的图像视图。现在你说

    cell.Icon.image = rowimage
    

    【讨论】:

      【解决方案2】:

      伙计,马特,你回答问题的速度快吗?我敢肯定,我不是唯一一个对此表示赞赏的人。

      有趣的是,花半个小时为这个网站写出一个体面的问题会让你开始考虑其他要尝试的事情。我在一次尝试中遇到了段错误,并在错误消息中四处寻找。从他们那里,我了解到 ImageView 是一种结构,其中包含一个“图像”字段(或类似的东西),所以我尝试了一些 UIImageView x UIImage crosses 看看会发生什么。

      果然,我试图将 ImageView 分配给 Image(我认为;我仍然可能是错的)。这是对我有用的代码行。

      cell.Icon.image = UIImage(named: reportimages[row])
      

      所以你可以看到我在这里为一个图像分配了一个图像,它工作正常。并且...一定是对的,因为它与马特的代码相同! :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多