- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 CollectionViewController 包含一个图像。当我在我的 CollectionViewController 中单击图像时,它会将我带到我想要编辑图像细节的 detailviewcontroller。当我输入 URL 等详细信息,然后单击后退按钮时,它应该从 URL 获取图像并替换我的 CollectionViewController 中的图像。
我有两个问题:
import Foundation
class Photo {
var url: String = ""
var data: NSData? = nil
var Title: String = ""
var Tags: String = ""
func loadImage(completionHandler: (data: NSData?) ->Void) {
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0)
dispatch_async(queue) {
let mainQueue = dispatch_get_main_queue()
if let url = NSURL(string: self.url) {
if let data = NSData(contentsOfURL: url) {
sleep(3)
dispatch_async(mainQueue) {
self.data = data
completionHandler(data: data)
}
return
}
dispatch_async(mainQueue) {
completionHandler(data: nil)
}
}
}
}
}
细节 View Controller
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
var photo: Photo!
@IBOutlet weak var textURL: UITextField!
@IBOutlet weak var textTitle: UITextField!
@IBOutlet weak var textTags: UITextField!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
let urlString = textField.text
photo.url = urlString
let DatatoImage: (NSData?) -> Void = {
if let d = $0 {
let image = UIImage(data: d)
self.imageView.image = image
} else {
self.imageView.image = nil
}
//textField.resignFirstResponder()
}
if let d = photo.data {
DatatoImage(d)
textField.resignFirstResponder()
let image = UIImage(data: d)
self.imageView.image = image
} else {
photo.loadImage(DatatoImage)
}
return true
}
}
我的主视图 Controller
import UIKit
let reuseIdentifier = "Cell"
class PhotosCollectionViewController: UICollectionViewController {
var photos = Array<Photo>()
override func viewDidLoad() {
super.viewDidLoad()
let photo = Photo()
photo.url = "http://www.griffith.edu.au/__data/assets/image/0019/632332/gu-header-logo.png"
photos.append(photo)
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Register cell classes
self.collectionView!.registerClass(PhotoCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
//#warning Incomplete method implementation -- Return the number of sections
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return photos.count
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as PhotoCollectionViewCell
let photo = photos[indexPath.row]
if let d = photo.data {
let image = UIImage(data: d)
cell.imageView.image = image
photo.url = "\(photo.url)"
photo.Title = "\(photo.Title)"
} else {
photo.loadImage {
if $0 != nil {
collectionView.reloadItemsAtIndexPaths([indexPath])
}
}
}
return cell
}
// Uncomment this method to specify if the specified item should be highlighted during tracking
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let indexPath = sender as? NSIndexPath {
let photo = photos[indexPath.row]
}
if (segue.identifier == "showDetail") {
if let dvc = segue.destinationViewController as? ViewController {
let photo = Photo()
dvc.photo = photo
}
}
}
override func collectionView(collectionView: UICollectionView, shouldHighlightItemAtIndexPath indexPath: NSIndexPath) -> Bool {
performSegueWithIdentifier("showDetail", sender: indexPath)
return true
}
最佳答案
在您的 prepareForSegue 方法中,您有这一行,
let photo = Photo()
这会创建一个新的 Photo 对象,它不会获取您在所选单元格中显示的对象。您在 if let 语句中得到了正确的引用。使用那个(let photo = photos[indexPath.row]
)。
至于后退按钮,如果该后退按钮是您在推送到新 Controller 时自动获得的按钮,则您不必编写任何代码来实现它。
关于ios - 在collectionviewcontroller中点击图片时在detailviewcontroller中获取图片详情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775062/
我需要你的帮助!我在它们之间放置了随机数量的 div。 Item description Item description Item description Item
我有两个 NSDates,时间格式为“h:mm a”(即 6:00 AM 和 8:00 PM)。 我试图找出这两个时间之间的中点是什么时间。 对于上面的示例,早上 6:00 和晚上 8:00 之间的中
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我正在寻找一种有效的算法来检查一个点是否在 3D 中的另一个点附近。 sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2) < radius 这似乎并不太快,实际上我不需要这
我可以让 pandas cut/qcut 函数返回 bin 端点或 bin 中点而不是一串 bin 标签吗? 目前 pd.cut(pd.Series(np.arange(11)), bins = 5)
我是一名优秀的程序员,十分优秀!