UIImage 没有出现

Posted

技术标签:

【中文标题】UIImage 没有出现【英文标题】:UIImage not appearing 【发布时间】:2016-02-15 15:18:37 【问题描述】:

当我从我的NewsTableViewController.swift 中分离出我的UIImageView 时,图像不会出现在我的NewsDetailTableViewController.swift 中。

这是我的模拟器的图像:


这是我Main.storyboard的图片:


这是我的prepareForSegue()方法代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)

    if segue.identifier == "showDetail" 

        if let indexPath = tableView.indexPathForSelectedRow 
            let destinationController = segue.destinationViewController as! NewsDetailTableViewController
            destinationController.item = items[indexPath.row]
            let newsImage = UIImageView(image: UIImage(named: detailImages[indexPath.row]))
            destinationController.image = newsImage
        
    

还值得一提的是,我的NewsTableViewController.swift 中的图像设置为0x0,而我的NewsDetailTableViewController.swift 中设置为600x216。我不知道这是否重要。如果您需要任何代码,请随时询问。

仅供参考,我使用 Swift。

【问题讨论】:

你的意思是NewsTableViewController中的imageView设置为0x0? 您将图像视图传递给 NewsDetailTableViewController,这是故意的吗?看起来您已经在界面构建器中创建了一个 UIImageView。尝试仅将图像传递给 NewsDetailTableViewController,并在 NewsDetailTableViewController 加载时简单地在 UIImageView 上设置图像。 @AlanPerez 我不明白。如果您愿意,可以添加答案。 【参考方案1】:

在 prepareForSegue 中,destinationController 的 IBOutlets 尚未初始化。只需将 detailImages 传递给 NewsDetailTableViewController 上的另一个数组属性。将您的 prepareForSegue 更改为:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)

    if segue.identifier == "showDetail" 

        if let indexPath = tableView.indexPathForSelectedRow 
            let destinationController = segue.destinationViewController as! NewsDetailTableViewController
            destinationController.item = items[indexPath.row]
            destinationController.imageNames = detailImages
        
    

然后在NewsTableViewController中添加如下代码:

 var imageNames:[String]?

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    //replace with whatever identifier you're using
    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell

    cell.imageView?.image = self.imageNames[indexPath.row]?

    return cell

【讨论】:

如何传递主视图控制器中的图像数组? 我假设detailImages[indexPath.row] 是一个字符串数组。您可以在 NewsDetailTableViewController 上创建一个 [String] 属性并将其设置在 prepareForSegue 例如(destinationController.imageNames = detailImages 我添加了这个,但是viewDidLoad() 中的代码行有一个错误提示: > 'NewsTableViewController.swift' 类型的值没有成员'image'。 destinationController.image = newsImage 如何在您的代码中工作? destinationController 不是 NewsDetailTableViewController 类型的吗? 该行没有错误,但只是没有修复它。 destinationController 有这行代码熟悉它let destinationController = segue.destinationViewController as! NewsDetailTableViewController

以上是关于UIImage 没有出现的主要内容,如果未能解决你的问题,请参考以下文章

UIimage没有出现在iOS中的滚动视图上

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

UIImage 替换为另一个不平滑的 UIImage

在没有内存峰值的情况下旋转 UIImage

随机出现的 UIImage

通过自定义形状裁剪 UIImage