调用一个函数来向另一个类隐藏按钮-swift



我正在尝试创建一个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
}

尝试使用NSUserDefaults

在LandingViewController 中

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

电影中TableViewCell

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

最新更新