swiftEntryKit пользовательское всплывающее перо, не загружающее данные
У меня есть всплывающее окно с пером, используя swiftEntryKit, который отображает данные от пользователя, на которого щелкнул currentUser.
- У меня есть файл с именем nib
UserRequestView
- и класс UIView под названием
UserRequestView
- У меня также есть еще один класс UIView называется
UserRequestPreviewView
который является пользовательским классом пера и устанавливает все данные в файле пера
когда currentUser выбирает другого пользователя из collectionView внутри 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"
Я не понимаю, почему изображения и текст не отображаются в перо. у кого-нибудь есть решение? Благодарю.