在我的tableview
中,我正在加载tableviewcells
&值如此显示在那些单元格上......
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: sellTableViewCell = tableView.dequeueReusableCell(withIdentifier: "abc") as! sellTableViewCell
let product = arrProduct?[indexPath.section]
cell.rateTextField.text = product?.theRate
//Showing images in imageView using SDWebImage
cell.prdImgView.sd_setImage(with: arrProduct?[indexPath.section].images[indexPath.row].url, placeholderImage: UIImage(named: "appLogo.jpg"), options: []) { (image, error, imageCacheType, imageUrl) in
self.appDelegate.commonArrayOfSelectedImages.append(image!)}}
现在,self.appDelegate.commonArrayOfSelectedImages
拥有所有图像。这些图像我能够在另一个视图控制器中显示。
但是除了图像之外,我还希望将每个图像的速率(在cell.rateTextField.text
中显示)传递到另一个视图,这样我就可以获得我的图像以及与每个图像相关的速率。费率如何与我无法弄清楚的图像一起传递。希望有人能帮忙......
答案 0 :(得分:0)
创建一个数组,其中ViewController要传递数组值。
绑定UITableViewDelegate
添加UITableViewDelegate的didselect方法
optional public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
}
假设你的数组是arrAnotherVC而viewcontroller将是AnotherVC。
let anotherVC = AnotherVC!
let product = arrProduct?[indexPath.section]
anotherVC.arrAnotherVC = arrProduct?[indexPath.section]
因此,您可以在AnotherVC中获取您的值。
谢谢!!!
答案 1 :(得分:0)
我相信使用AppDelegate在ViewControllers之间传递数据并不是一个好方法。
如果你想在两个ViewControllers之间传递日期,我建议你应该使用prepare for segue。这是一个例子。
您应该在Storyboard中的视图之间添加segue。不要在按钮和第二个视图之间创建segue,而是从第一个视图到第二个视图创建segue。
您应该为segue实施准备并执行segue方法:
第一个:
class SomeUIViewController: UIViewController {
var someData: Int = 123
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath as IndexPath)
tableView.deselectRow(at: indexPath as IndexPath, animated: true)
performSegue(withIdentifier: "Show the second class", sender: cell)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Show the second class" {
if let secondVC = segue.destination as? AnotherUIViewController {
secondVC.anotherData = self.someData
}
}
}
}
第二个:
class AnotherUIViewController: UIViewController {
var anotherData: Int?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Show the second class" {
if let secondVC = segue.destination as? AnotherUIViewController {
secondVC.anotherData = self.someData
}
}
}
}
答案 2 :(得分:0)
要传递图像和文本,可以创建一个Class对象:
class imageData: NSObject {
var image: UIImage?
var data: String?
}
然后将值存储在已定义对象的数组中:
var imageDataArray = [imageData]()
添加新数据:
Let imgData = imageData()
imgData.image = //your image
imgData.data = //your text
imageDataArray.append(imgData) //adding the data to array
现在你可以使用segue方法将这个数组传递给你的viewcontroller。
答案 3 :(得分:0)
您应该将 commonArrayOfSelectedImages 数组修改为封装图像和评级的对象数组,如:
class CommonImage {
let image: UIImage
var rate: String?
//create custom inits
}
每次访问 commonArrayOfSelectedImages 数组的元素时,您将获得 CommonImage 对象,其中每个图像都有相关评级。
答案 4 :(得分:0)
试试这个...
1.创建带有两个键的字典和ex的值。图像和速率两个关键。
2.然后在你的数组中添加这个字典并传递这个数组。
let temDic = NSMutableDictionary()
temDic.setValue(product?.theRate, forKey: "rate")
temDic.setValue(image!, forKey: "image")
self.appDelegate.commonArrayOfSelectedImages.add(temDic)