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 没有出现的主要内容,如果未能解决你的问题,请参考以下文章