swiftEntryKit пользовательское всплывающее перо, не загружающее данные - PullRequest
0 голосов
/ 11 января 2019

У меня есть пользовательское всплывающее окно с пером, использующее swiftEntryKit , которое отображает данные от пользователя, на которого щелкнул currentUser.

  1. У меня есть перо с именем UserRequestView
  2. и класс UIView с именем UserRequestView
  3. У меня также есть другой класс UIView с именем UserRequestPreviewView, который является пользовательским классом nibs и устанавливает все данные в файле nib

когда currentUser выбирает другого пользователя из коллекции ViewView внутри NewHomeViewController, currentUser отображается с всплывающим экраном, спрашивающим, следует ли отправить запрос на добавление в друзья. Для представления всплывающего окна я использую это:

`SwiftEntryKit.display(entry: UserRequestView(), using: popupAttributes)` 

и для загрузки данных в перо:

if let popupView = Bundle.main.loadNibNamed("UserRequestView", owner: self, options: nil)!.first as? UserRequestPreviewView {               
    popupView.currentUser = self.currentUser
    popupView.user = self.users[self.theUserIndex]
}

При запуске проекта и нажатии на пользователя всплывающее окно отображается нормально, и данные загружены в перо, однако изображения и текст на перо не изменились.

для большего контекста, вот класс UserRequestView:

class UserRequestView: UIView {

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setup()
}

init() {
    super.init(frame: .zero)
    setup()
}
private func setup() {
    fromNib()

}

}

метод fromNib является расширением UIView:

extension UIView {

@discardableResult
func fromNib<T : UIView>() -> T? {
    guard let contentView = Bundle(for: type(of: self)).loadNibNamed(type(of: self).className, owner: self, options: nil)?.first as? T else {
        return nil
    }

    addSubview(contentView)
    contentView.fillSuperview()
    return contentView
}
}

и класс, который я использую для настройки пера для отображения данных:

class UserRequestPreviewView: UIView {

@IBOutlet weak var userProfileImage: roundedImage!
@IBOutlet weak var userFirstLastName: UILabel!
@IBOutlet weak var usersBirthday: UILabel!
@IBOutlet weak var friendsOptionBtn: UIButton!

var currentUser: User!
var user: User! {
    didSet {
        if currentUser != nil {
            print("the current user = \(currentUser.firstName)")
            print("this user = \(user.firstName)")
            setUp()
        }
    }
}
var cache = SAMCache.shared()

override func awakeFromNib() {
    super.awakeFromNib()

    layer.applySketchShadow()
    layer.cornerRadius = 20
    layer.masksToBounds = false

    friendsOptionBtn.layer.cornerRadius = friendsOptionBtn.bounds.height / 2.0
    friendsOptionBtn.layer.masksToBounds = true

    userProfileImage.layer.cornerRadius = userProfileImage.bounds.height / 2.0
    userProfileImage.layer.masksToBounds = true

    friendsOptionBtn.isEnabled = true

}

 func setUp(){

    print("got to set up")

     let profileImageKey = "\(user.uid)-profileImage"
     if let image = cache?.object(forKey: profileImageKey) as? UIImage{

        self.userProfileImage.image = image
        print("setting image 1")

     }else{
         user.downloadProfilePicture { [weak self] (image, error) in
             if let image = image {
                 self?.userProfileImage.image = image
                print("setting image 2")
                 self?.cache?.setObject(image, forKey: profileImageKey)
             }else if error != nil {
                print(error)
             }
        }
    }

     userFirstLastName.text = "\(user.firstName) \(user.lastName)"
     usersBirthday.text = "\(user.birthday)"
}
} 

Я знаю, что currentUser и пользователь были установлены в перо, потому что операторы печати отображаются в консоли

«нужно настроить» отпечатки, как и «настройка изображения 1»

Я не понимаю, почему изображения и текст не отображаются в перо. у кого-нибудь есть решение? спасибо.

...