Перенести данные из одного TableView в другой TableView, нажав кнопку - PullRequest
0 голосов
/ 21 июня 2020

данные действия передачи. Ошибка заключается в том, что я не могу получить доступ к переменной во втором TableView.

Ошибка: невозможно присвоить значение типа «Fav?» для типа «[Fav]» и член экземпляра «getFav» нельзя использовать для типа «FavouriteTableV C»; Вы хотели вместо этого использовать значение этого типа?

Struct Data

struct Fav {
    var image: UIImage?
    var name: String
    var price: String
    
    static let favName = ["Faaaak", "Dunc"]
    
    static func getFav() -> [Fav] {
        
        var favourites = [Fav]()
        
        for fav in favName {
            favourites.append(Fav(image: nil, name: fav, price: "29.000"))
        }
        return favourites
    }
}

первая TableCell


class DivanCell: UITableViewCell {
    
    var fav: Fav?

    @IBOutlet weak var divanNameLabel: UILabel!
    @IBOutlet weak var divanPhoto: UIImageView! 
    @IBOutlet weak var priceLabel: UILabel!
    @IBOutlet weak var sizeDivan: UILabel!
    @IBOutlet weak var favButton: UIButton!
    @IBAction func favTapped(_ sender: Any) {
        favButton.setImage(UIImage(systemName: "heart.fill"), for: UIControl.State.normal)
        favTapped(favNext: FavouriteTableVC())
    }
    
    func favTapped(favNext: FavouriteTableVC) {
        fav = Fav(image: divanPhoto.image, name: divanNameLabel.text!, price: priceLabel.text!)
        FavouriteTableVC.getFav = fav // Error: Cannot assign value of type 'Fav?' to type '[Fav]' and Instance member 'getFav' cannot be used on type 'FavouriteTableVC'; did you mean to use a value of this type instead?
    }

}

вторая TableViewV C


class FavouriteTableVC: UITableViewController {
    
    var getFav = Fav.getFav()

    override func viewDidLoad() {
        super.viewDidLoad()
        
    }

    @IBOutlet weak var favName: UILabel!
    @IBOutlet weak var favPrice: UILabel!
    @IBOutlet weak var favImage: UIImageView!

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

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "favouriteCell", for: indexPath) as! FavouriteTableViewCell

        let favs = getFav[indexPath.row]
               
        cell.name.text = favs.name
        cell.price.text = favs.price
        cell.favImage.image = favs.image
        tableView.reloadData()
        return cell
    }
    
    override func viewWillAppear(_ animated: Bool) {
        
        tableView.reloadData()
    }

// FavouriteTableViewCell

class FavouriteTableViewCell: UITableViewCell {

    @IBOutlet weak var name: UILabel!
    @IBOutlet weak var price: UILabel!
    @IBOutlet weak var favImage: UIImageView!

}

1 Ответ

0 голосов
/ 21 июня 2020

В коде есть две ошибки, вызывающие ошибки.

Cannot assign value of type 'Fav?' to type '[Fav]' вызвано тем, что вы пытаетесь присвоить объект типа Fav? [Fav].

Instance member 'getFav' cannot be used on type 'FavouriteTableVC'; did you mean to use a value of this type instead? вызвано тем, что вы пытаетесь выделить переменную без создания объекта.

Замените метод favTapped(favNext: FavouriteTableVC) приведенным ниже кодом. Надеюсь, это решит вашу проблему.

func favTapped(favNext: FavouriteTableVC) {
    if let tempFav = Fav(image: divanPhoto.image, name: divanNameLabel.text!, price: priceLabel.text!){
       favNext.getFav = [tempFav] 
       fav = tempFav
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...