问题描述
大家好,实际上我想在 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:
这里是我的 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 而不是从行制作(拖动)转场