如何将图像和标签从一个viewController传递到tableViewCell迅速?

问题描述

您好,我试图在不使用segue的情况下将数据从一个viewController传递到tableViewCell,我尝试了使用委托和nsNotificationCenter,但它对我不起作用,请帮帮我。

这是我要从中传递数据的视图控制器代码(imageViewSweet,LabelSweet)

   import UIKit


  class sweetAndSalty4ViewController: UIViewController {




@IBOutlet var imageViewSweet: UIImageView!


@IBOutlet var labelsweet: UILabel!


@IBOutlet var sweeetTable: UITableView!


 var passtext: String?



override func viewDidLoad() {
    
    
    passtext = labelsweet.text
    
    
    
    super.viewDidLoad()

  

}




@IBAction func sendData(_ sender: UIButton) {
    
    
     let sb = storyboard?.instantiateViewController(withIdentifier: "cartVC") as!       cartViewController
      sb.priceLabel = labelsweet
    present(sb,animated: true,completion: nil)

    

                
      }
  





 }

这是viewController的代码,我想从swwetAndSalty4ViewController中显示图像和标签

  import UIKit

  class cartViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

@IBOutlet var priceLabel: UILabel!

var passtext: String?

var cartItem = ""


@IBOutlet var cartTable: UITableView!



      override func viewDidLoad() {
          

          cartTable.delegate = self
          cartTable.dataSource = self
          
          
               
             
                   //  foodTable.separatorStyle = .none

          
          view.backgroundColor = UIColor.init(red: 228/255,green: 230/255,blue: 234/255,alpha: 1)
                   navigationItem.title = "My Cart"
          
          super.viewDidLoad()
          // Do any additional setup after loading the view.
      }

      func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
          
          
          return cartItem.count
      }








      func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat {
          240
      }
      func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
          
          
          let cell = tableView.dequeueReusableCell(withIdentifier: "cartCell") as! cartTableViewCell
          
          
        
          
              cell.layer.cornerRadius = 30
                 
                 cell.layer.borderWidth = 15.0
                 cell.layer.borderColor = UIColor.white.cgColor
                 
                 
                 
        cell.cartimage.layer.masksToBounds = true
                 cell.cartimage.layer.cornerRadius = 2
                 cell.cartimage.translatesAutoresizingMaskIntoConstraints = false
                 cell.cartimage.contentMode = .scaleAspectFill
                 
                 
                 
                 cell.cartLabel.font = UIFont.systemFont(ofSize: 16,weight: .medium)
                 
                 cell.cartLabel.textColor = .black
                 cell.cartLabel.translatesAutoresizingMaskIntoConstraints = false
          cell.cartLabel.backgroundColor = .systemGray5
                
                 
                 
                 cell.cartLabel.text = ""
                 cell.cartimage.image = UIImage(named: "")
             
                 
          
               //  cell.contentView.backgroundColor = .white
                
                 
          
          
          
          
          
          
          
          
          
          
          return cell
          
      }
      
  
  
  
  
  }

解决方法

您去了,我也组织了您的代码: 第一视图控制器:

import UIKit

struct myVariables {
    static var kinder: String! = nil
    static var kinderImage: UIImage! = nil
}

class sweetAndSalty4ViewController: UIViewController {
    
    @IBOutlet var imageViewSweet: UIImageView!
    @IBOutlet var labelsweet: UILabel!
    @IBOutlet var sweeetTable: UITableView!
    
    var passText: String?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        passText = labelsweet.text
    }

    @IBAction func sendData(_ sender: UIButton) {
        let sb = storyboard?.instantiateViewController(withIdentifier: "cartVC") as!       cartViewController
         sb.priceLabel = labelsweet
       present(sb,animated: true,completion: nil)
    }
    
    func sendDataToMyVariables(kinder: String,kinderImage: UIImage) {
        myVariables.kinder = kinder
        myVariables.kinderImage = kinderImage
    }
    
 }

然后,在发送变量后,您可以在代码中的任何位置使用它们

myVariables.kinder // get the string
myVariables.kinderImage // get the image