如何准备segue可以选择选定的通过标签文本到文本字符串

发布于 2025-01-26 12:59:46 字数 1187 浏览 4 评论 0原文

我已经准备了一个segue,但是当用户选择一个单元格时,它不是将标签文本传递给文本详细信息查看

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "viewNumberSegue" {
        guard let indexPath = sender as? IndexPath else { return }

        let collectionCell = collectionView.cellForItem(at: indexPath) as! ItemCollectionViewCell
        let textToPass = collectionCell.ItemLabel.text

        let detailVC = segue.destination as? DetailViewController
        detailVC?.number = textToPass!
    }
}


// MARK: UICollectionViewDelegate
extension GridCollectionViewController {
    

    override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

          self.performSegue(withIdentifier: "viewNumberSegue", sender: indexPath)

  }
}

详细信息

import UIKit

class DetailViewController: UIViewController {
    
    var number:String = "" 
    @IBOutlet weak var numberLabel: UILabel!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        print(number)
        numberLabel.text = number
    }
}

I have prepared a segue but when the user selects a cell it is not pass label text to text in detail View

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "viewNumberSegue" {
        guard let indexPath = sender as? IndexPath else { return }

        let collectionCell = collectionView.cellForItem(at: indexPath) as! ItemCollectionViewCell
        let textToPass = collectionCell.ItemLabel.text

        let detailVC = segue.destination as? DetailViewController
        detailVC?.number = textToPass!
    }
}


// MARK: UICollectionViewDelegate
extension GridCollectionViewController {
    

    override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

          self.performSegue(withIdentifier: "viewNumberSegue", sender: indexPath)

  }
}

DetailVC

import UIKit

class DetailViewController: UIViewController {
    
    var number:String = "" 
    @IBOutlet weak var numberLabel: UILabel!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func viewWillAppear(_ animated: Bool) {
        print(number)
        numberLabel.text = number
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风夜微凉 2025-02-02 12:59:46

与其传递发件人中的indexpath,而是直接将数字作为发件人传递。

extension GridCollectionViewController {

   override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     let collectionCell = collectionView.cellForItem(at: indexPath) as! ItemCollectionViewCell
     let textToPass = collectionCell.ItemLabel.text

     self.performSegue(withIdentifier: "viewNumberSegue", sender: textToPass)
  }
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if segue.identifier == "viewNumberSegue" {
     guard let number = sender as? String else { return }

     let detailVC = segue.destination as? DetailViewController
     detailVC?.number = number
  }
}

Instead of passing the indexPath in sender, it's better to directly pass the number as sender.

extension GridCollectionViewController {

   override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     let collectionCell = collectionView.cellForItem(at: indexPath) as! ItemCollectionViewCell
     let textToPass = collectionCell.ItemLabel.text

     self.performSegue(withIdentifier: "viewNumberSegue", sender: textToPass)
  }
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if segue.identifier == "viewNumberSegue" {
     guard let number = sender as? String else { return }

     let detailVC = segue.destination as? DetailViewController
     detailVC?.number = number
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文