Отправить данные из UIViewController в UIView - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь отправить данные из UIViewController в UIView. Я смотрел везде, но ни один из них не работает правильно. Как показано ниже, я пытаюсь отправить 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)
        }
    }
}

1 Ответ

0 голосов
/ 25 июня 2019

Я думаю, что вы попробовали свой метод внутри didSelectRowAt(), но он не будет работать, потому что вы пытаетесь передать данные без инициализации priceLabel notificationLabel, так что есть другой способ выполнить это. Вам нужно создать переменную в вашем popupView для вашей цены и уведомления.

var price: String = ""

Внутри вашего didSelectRowAt() метода вам нужно сделать popup.price = "100.0". Затем внутри метода viewDidLoad() всплывающего окна вам нужно выполнить следующее.

priceLabel.text = price
...