pu sh данные из UITableView для программного просмотра контроллера - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь получить данные sh из tableView в контроллер View. Я могу успешно передать некоторые данные, но мне все еще не хватает некоторых ключевых моментов. Я постараюсь проиллюстрировать свой вопрос в меру своих способностей. В моем уведомлении TableView, у меня есть данные, которые хранятся, такие как userName, userImage, jobName и jobImage. Я могу успешно добавить sh к изображению и имени пользователя, однако JobName и JobImage не могут быть перенесены, как мы видим на изображениях ниже.

firstImage

На этом изображении мы можем видеть разделы tableView, которые имеют userName, userImage, jobName и jobImage.

second image

На втором изображении мы видим, что usersName и Image успешно выдвинуты. Однако jobImage и имя не передаются.

код, который я использую для получения информации sh:

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let notification = notifications[indexPath.row]
    if notification.notificationType != .swipe {

        let acceptWorker = jobProgressViewController()
        acceptWorker.workerUser = myUser
        acceptWorker.workerUser = notification.user
        jobProgressView?.myParentViewController = self
        let navController = UINavigationController(rootViewController: acceptWorker)
                  present(navController, animated: true, completion: nil)

    } else {
   print("something else should go here")
}

, а код, который я использую для получения информации, приведен ниже. Это мой jobProgressViewController

     var notification: userNotifications?
     var workerUser: User? {

didSet {
    let name = workerUser?.name
    workerNameLabel.text = name


    guard let profileImage = workerUser?.profileImageUrl else { return }
    workerImageView.loadImageUsingCacheWithUrlString(profileImage)

    if let post = notification?.poster {
        jobImageView.loadImageUsingCacheWithUrlString(post.imageUrl1!)
        jobLabel.text = post.category
        addressLabel.text = post.category
                      }

}
}

   fileprivate func setupView(){
    let postUser = workerUser.self
    let uid = Auth.auth().currentUser?.uid
    let userName = postUser?.name
    let posterId = postUser?.uid
    let post = notification?.poster

    guard let userImage = workerUser?.profileImageUrl else { return }
    Database.database().reference().child("users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
        guard let dictionary = snapshot.value as? [String : Any] else { return }
        let user = User(dictionary: dictionary as [String : AnyObject])

        let currentUser = MyUser(dictionary: dictionary as [String : AnyObject])
        self.posterImageView.image = #imageLiteral(resourceName: "user")
        self.posterImageView.loadImageUsingCacheWithUrlString(userImage)

        self.userNameLabel.text = userName
        self.userNameLabel.font = UIFont.systemFont(ofSize: 30)
        self.userNameLabel.textColor = UIColor.black

        self.workerImageView.image = #imageLiteral(resourceName: "user")
        self.workerImageView.loadImageUsingCacheWithUrlString(currentUser.profileImageUrl!)

        self.workerNameLabel.text = currentUser.name
        self.workerNameLabel.font = UIFont.systemFont(ofSize: 30)
        self.workerNameLabel.textColor = UIColor.black


        self.addressLabel.text = postUser?.address
        self.addressLabel.font = UIFont.systemFont(ofSize: 30)
        self.addressLabel.textColor = UIColor.black

        self.jobLabel.text = post?.category
        self.jobLabel.font = UIFont.systemFont(ofSize: 30)
        self.jobLabel.textColor = UIColor.black



    }, withCancel: { (err) in
        print("attempting to load information")

    })
     print("this is your uid \(posterId!)")
}

ниже показано, как я заполняю свой блок уведомлений, который показывает информацию о пользователях в моем tableView

    var jobProgressView: jobProgressViewController? = nil

 var delegate: NotificationCellDelegate?

var notification: userNotifications? {
    didSet {


       guard let user = notification?.user else { return }
       guard let profileImageUrl = user.profileImageUrl else { return }


        profileImageView.loadImageUsingCacheWithUrlString(profileImageUrl)
        configureNotificationLabel()
        configureNotificationType()

        if let post = notification?.poster {
            postImageView.loadImageUsingCacheWithUrlString(post.imageUrl1!)
        }
    }
}

    func configureNotificationLabel() {
    guard let notification = self.notification else { return }
    guard let user = notification.user else { return }
    guard let poster = notification.poster else { return }
    guard let username = user.name else { return }
    guard let notificationDate =  configureNotificationTimeStamp() else { return }
    guard let jobName = poster.category else { return }

    let notificationMessage = notification.notificationType.description

    let attributedText = NSMutableAttributedString(string: username, attributes: [NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 14)])

    attributedText.append(NSAttributedString(string: notificationMessage , attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14), NSAttributedString.Key.foregroundColor: UIColor.black]))

    attributedText.append(NSAttributedString(string: jobName, attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14), NSAttributedString.Key.foregroundColor: UIColor.black]))

    attributedText.append(NSAttributedString(string: " \(notificationDate).", attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14), NSAttributedString.Key.foregroundColor: UIColor.gray]))
        notificationLabel.attributedText = attributedText
}

, если есть какая-либо информация, которую я мог бы оставить, чтобы помочь с получением ответ, пожалуйста, дайте мне знать. пожалуйста и спасибо.

1 Ответ

0 голосов
/ 11 февраля 2020

В качестве обсуждения вы забыли установить уведомление для jobProgressViewController

В шутку c didSelectRowAt indexPath добавьте следующий код:

acceptWorker.notification = notification
...