将数据从UIViewController发送到UIView

时间:2019-06-25 01:35:41

标签: swift uitableview uiview segue popupwindow

我正在尝试将数据从UIViewController发送到UIView。我到处都看过,但似乎都无法正常工作。如下所示,当用户选择特定行时,我试图将UIViewcontroller中的popup.priceLabel.text和popup.notificationLabel.text发送到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)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为您在didSelectRowAt()方法中尝试了segue,但是它无法工作,因为您试图在不初始化priceLabel notificationLabel的情况下传递数据,因此还有另一种方法可以实现它。您需要在popupView中为价格和通知创建一个变量。

var price: String = ""

在您的didSelectRowAt()方法中,您需要做的是popup.price = "100.0"。然后,在弹出窗口的viewDidLoad()方法中,您需要执行以下操作。

priceLabel.text = price