Вызов функции, которая скроет кнопку от другого класса - swift - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать приложение для просмотра фильмов IMDB, в котором, когда пользователь не входит в систему и нажимает кнопку «Пропустить», кнопка «Избранное» (добавить фильм в избранное) исчезает.

LandingViewController находится там, где кнопка Пропустить, а MovieTableViewCell там, где представлены все данные.

Что я должен сделать, чтобы действие скрытия работало внутри функции? какая логика стоит за этим? что мне не хватает?

Пожалуйста, проверьте приведенные ниже комментарии в коде. спасибо!

import UIKit

class LandingViewController: UIViewController {
    @IBOutlet weak var skipButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBAction func didTapSkip(_ sender: Any) {
    MovieTableViewCell().hideButton()
   }

import UIKit

class MovieTableViewCell: UITableViewCell {
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var ratingLabel: UILabel!
    @IBOutlet weak var languageLabel: UILabel!
    @IBOutlet weak var releaseYearLabel: UILabel!
    @IBOutlet weak var posterImage: UIImageView!
    @IBOutlet weak var favoriteButton: UIButton?




    override func awakeFromNib() {
        super.awakeFromNib()
        favoriteButton?.isHidden = true  // works here for some reason
    }


    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)


    }

    func hideButton() {
        favoriteButton?.isHidden = true  // doesn't work and If I unwrap it, the app will crash, because it will find the buttton as NIL for some reason
        print("hidebutton") // the print works so the function works when the skip is pressed

    }

1 Ответ

0 голосов
/ 30 октября 2018

Попробуйте использовать NSUserDefaults

В LandingViewController

@IBAction func didTapSkip(_ sender: Any) {
    UserDefaults.standard.set(true, forKey: "didSkip")
}

В MovieTableViewCell

override func awakeFromNib() {
    super.awakeFromNib()
    if UserDefaults.standard.bool(forKey: "didSkip") {
        favoriteButton?.isHidden = true  
    } else {
        favoriteButton?.isHidden = false  
    }
}
...