Насколько я могу судить, ваша проблема здесь:
func favTapped() {
favFurniture = (Furniture(name: divanNameLabel.text!, type: "Divan", image: divanPhoto.image!, price: priceLabel.text!))
FavouriteTableViewCell().favFurniture = favFurniture
}
Кажется, вы не поняли основ OOP.
Краткий ответ:
Вы вызываете этот метод и инициализируете внутри него новый FavouriteTableViewCell
. Как вы планируете использовать этот экземпляр, который вы только что создали, вне этого метода? Или, может быть, не нужно снова обращаться к нему? Тогда я ошибаюсь и можно поступить так. Изменения этого экземпляра должны быть видны внутри этого метода.
Если вы планируете использовать / получать доступ к измененному экземпляру вне вашей функции, вам необходимо передать вашему методу ссылку на этот экземпляр. Таким образом, он может изменить указанный экземпляр, и вы можете затем, после корректировок, «увидеть» и использовать эти изменения вне этого метода.
Мой пример выше должен прояснить, как действовать.
Вот пример вашего кода, который компилируется: Примечание: я не пытался запускать его, так как мне не хотелось создавать все необходимые зависимости.
class DivanCell: UITableViewCell {
var favFurniture: Furniture?
@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()
}
func favTapped() {
favFurniture = (Furniture(name: "name", type: "Divan", image: "image", price: "price"))
// As you create the instance of FavouriteTableViewCell in here it will also only be visible in here
FavouriteTableViewCell().favFurniture = favFurniture
}
func favTappedNew(favTableViewCell: FavouriteTableViewCell) {
favFurniture = (Furniture(name: "name", type: "Divan", image: "image", price: "price"))
// Now the instance of FavouriteTableViewCell that you passed to this method is altered and you can access it outside
favTableViewCell.favFurniture = favFurniture
}
}
class FavouriteTableViewCell: UITableViewCell {
var favFurniture:Furniture?
}
class Furniture {
var name: String
var type: String
var image: String
var price: String
init(name: String, type: String, image: String, price: String) {
self.name = name
self.type = type
self.image = image
self.price = price
}
}