如何以不同的方式在 prepareForSegue 函数上传递数据?迅速 5

问题描述

大家好,实际上我想在 tableView 中添加单元格的数据,当我点击它时,数据应该传递给 showOfferController(另一个视图控制器),但我不知道为什么我的数据在传递给 showOfferController 时为零:

这是我的 prepareForSegue 函数

 override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
       if segue.identifier == "cellToShow" {
          
               let prePag = segue.destination as! ShowOfferController
            //print("title : \(title)")
            if WelcomeJson.CodingKeys.title.rawValue == titleItem {
                prePag.celanderItem = WelcomeJson.CodingKeys.dateOfExpire.rawValue
                prePag.itemImage[0] = imageString
                prePag.itemAddress = WelcomeJson.CodingKeys.address.rawValue
                prePag.itemOffer = WelcomeJson.CodingKeys.offer.rawValue
                prePag.itemDefine = WelcomeJson.CodingKeys.about.rawValue
           }
        
       }
   }

这也是我的 DidSelectRow TableView 函数

func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
    
    
    performSegue(withIdentifier: "cellToShow",sender: nil)
    
}

这是我在 main.storyBoard 上的 ShowOfferController,也是我的 viewController 或 VC1,tabelViewCell 指向 ShowOfferController:

enter image description here

这里是我的 ShowOfferController.swift 代码

class ShowOfferController: UIViewController,uiscrollviewdelegate {


@IBOutlet weak var offerScroll: UIScrollView!

@IBOutlet weak var offerPageController: UIPageControl!

@IBOutlet weak var getLabel: UILabel!

@IBOutlet weak var percentLbl: UILabel!
@IBOutlet weak var calendar: UILabel!
@IBOutlet weak var address: UILabel!
let locations = NSTextAttachment()
let calendars = NSTextAttachment()
let precents = NSTextAttachment()
var itemAddress : String = ""
var itemOffer : String = ""
var celanderItem : String = ""
var itemImage : [String] = []
var itemDefine : String = ""

var frame: CGRect = CGRect(x:0,y:0,width:0,height:0)

override func viewDidLoad() {
    super.viewDidLoad()
   print("item of images is : \(itemImage)")
    // Do any additional setup after loading the view.
    
    offerPageController.numberOfPages = itemImage.count
    
    setupImages()
    offerScroll.delegate = self
    getLabel.text = itemDefine
    locations.image = UIImage(systemName: "location.fill")
    let locationVaAdress = NSMutableAttributedString(string: ". ")
    locationVaAdress.append(NSAttributedString(attachment: locations))
    locationVaAdress.append(NSAttributedString(string: "   \(itemAddress)"))
    address.attributedText = locationVaAdress
    calendars.image = UIImage(systemName: "calendar")
    let calendaRSS = NSMutableAttributedString(string: ". ")
    calendaRSS.append(NSAttributedString(attachment: calendars))
    calendaRSS.append(NSAttributedString(string: "   \(celanderItem)"))
    calendar.attributedText = calendaRSS
    precents.image = UIImage(systemName: "percent")
    let percentAndDarsad = NSMutableAttributedString(string: ". ")
    percentAndDarsad.append(NSAttributedString(attachment: precents))
    percentAndDarsad.append(NSAttributedString(string: "   \(itemOffer)"))
    percentLbl.attributedText = percentAndDarsad
    
}

func setupImages() {
    
    for index in 0..<itemImage.count {
        // 1.
        frame.origin.x = offerScroll.frame.size.width * CGFloat(index)
        frame.size = offerScroll.frame.size
        
            let correctScope = itemImage[index].addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
            let unoptionalScope = correctScope!
            let imgurl = URL(string: "http://5.63.13.16:8080/\(unoptionalScope)")!
            if let data = try? Data(contentsOf: imgurl) {
                let imgOffer = UIImageView(frame: frame)
                imgOffer.image = UIImage(data: data)
                self.offerScroll.addSubview(imgOffer)
            }
        
        offerScroll.contentSize = CGSize(width: (offerScroll.frame.size.width * CGFloat(itemImage.count)),height: offerScroll.frame.size.height)
           offerScroll.delegate = self
    }
    
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let pageNumber = offerScroll.contentOffset.x / offerScroll.frame.size.width
    offerPageController.currentPage = Int(pageNumber)
} 

你有什么想法?

解决方法

您应该从故事板中的 on top of the table view controller 而不是从行制作(拖动)转场