将数据从 UIViewController 发送到 UIView
Send Data from UIViewController to UIView
我正在尝试将数据从 UIViewController 发送到 UIView。我到处都看过,但 none 似乎工作正常。如下所示,当用户选择特定行时,我试图将 popup.priceLabel.text 和 popup.notificationLabel.text 从 UIViewcontroller 发送到 UIView。我尝试使用 segue、协议和其他方法,但似乎没有任何效果。下面是我想要完成的(我知道它不正确但只是为了说明意图):
//UIViewController
class CouponsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("selected = \(indexPath.row)")
let popup = PopUpWindow()
popup.priceLabel.text = "100.00"
popup.notificationLabel.text = "Store"
handleShowPopUp()
}
@objc func handleShowPopUp() {
popUpWindow.showSuccessMessage = success
success = !success
popUpWindow.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
popUpWindow.alpha = 0
}
}
//UIView
class PopUpWindow: UIView {
var delegate: PopUpDelegate?
var showSuccessMessage: Bool? {
didSet {
guard showSuccessMessage != nil else { return }
priceLabel.text = ""
notificationLabel.text = ""
priceLabel.textColor = UIColor(red: 147/255, green: 227/255, blue: 105/255, alpha: 1)
}
}
}
我认为你在 didSelectRowAt()
方法中尝试了你的 segue,但是它不会工作,因为你试图在不初始化 priceLabel
notificationLabel
的情况下传递数据,所以还有另一种方法可以完成它。您需要在 popupView
中为您的价格和通知创建一个变量。
var price: String = ""
在您的 didSelectRowAt()
方法中,您需要做的是 popup.price = "100.0"
。然后在弹出窗口的 viewDidLoad()
方法中,您需要执行以下操作。
priceLabel.text = price
我正在尝试将数据从 UIViewController 发送到 UIView。我到处都看过,但 none 似乎工作正常。如下所示,当用户选择特定行时,我试图将 popup.priceLabel.text 和 popup.notificationLabel.text 从 UIViewcontroller 发送到 UIView。我尝试使用 segue、协议和其他方法,但似乎没有任何效果。下面是我想要完成的(我知道它不正确但只是为了说明意图):
//UIViewController
class CouponsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("selected = \(indexPath.row)")
let popup = PopUpWindow()
popup.priceLabel.text = "100.00"
popup.notificationLabel.text = "Store"
handleShowPopUp()
}
@objc func handleShowPopUp() {
popUpWindow.showSuccessMessage = success
success = !success
popUpWindow.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
popUpWindow.alpha = 0
}
}
//UIView
class PopUpWindow: UIView {
var delegate: PopUpDelegate?
var showSuccessMessage: Bool? {
didSet {
guard showSuccessMessage != nil else { return }
priceLabel.text = ""
notificationLabel.text = ""
priceLabel.textColor = UIColor(red: 147/255, green: 227/255, blue: 105/255, alpha: 1)
}
}
}
我认为你在 didSelectRowAt()
方法中尝试了你的 segue,但是它不会工作,因为你试图在不初始化 priceLabel
notificationLabel
的情况下传递数据,所以还有另一种方法可以完成它。您需要在 popupView
中为您的价格和通知创建一个变量。
var price: String = ""
在您的 didSelectRowAt()
方法中,您需要做的是 popup.price = "100.0"
。然后在弹出窗口的 viewDidLoad()
方法中,您需要执行以下操作。
priceLabel.text = price