我已经从xib(profileView)设置了自定义视图。当我在“ chatPage”类中选择一个单元格时,我试图在配置文件类中设置令牌变量,并在视图加载时将其打印出来。
下面的代码不会输出令牌,令牌为空,我无法使其正常工作。
我将如何实现这一目标?
chatPage.swift
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// Pass the user token to the profileView class.
profileView().token = filteredArray[indexPath.row].token
view.addSubview(profileView.create(height: view.frame.height, width: view.frame.width, x: view.frame.origin.x, y: view.frame.origin.y, tag: 104))
}
自定义profileView类:
class profileView: UIView, UIScrollViewDelegate {
var token: String?
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var nameLabel: UILabel!
static func create(height: CGFloat,width:CGFloat,x:CGFloat,y:CGFloat,tag: Int) -> UIView{
profileView().token = "1"
let key = UINib(nibName: "profileView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
key.frame.size.height = height
key.frame.size.width = width
key.frame.origin.x = x
key.frame.origin.y = y
key.tag = tag
return key
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
//custom logic goes here
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if(scrollView.contentOffset.y < -60){
UIView.animate(withDuration: 1.0, delay: 0.0, options: [], animations: {
self.frame.origin.y += self.frame.height
}, completion: { (finished: Bool) in
self.removeFromSuperview()
})
}
}
}
答案 0 :(得分:0)
考虑您的工作顺序。你在说
profileView().token = filteredArray[indexPath.row].token
然后在下一行中说
profileView.create
的作用是什么?
profileView().token = "1"
首先,您要实例化profileView并设置其令牌。然后,您将其丢弃。然后,实例化另一个 profileView并将其令牌设置为1。因此,您的第一个代码也完全没有用。
此外,profileView.create
还会丢弃其 profileView。因此,您的第二代码完全没有用。这就是您到目前为止创建并丢弃的两个视图。
最后,通过从笔尖加载第三视图来创建视图。那是您实际进行任何操作的唯一方法。但这只是一个UIView,而不是profileView,即使它是profileView,也从不设置其令牌。