我的问题很简单:我的自定义UITableViewCell中的@IBOutlet UIImageView被隐藏,如果我尝试通过cellForRowAtIndexpath方法访问它。UIImageView隐藏在Xcode8和Swift3中
我听说这是一个Swift 3或Xcode 8问题(这是有道理的,因为我刚才更新后有这个问题)。我遇到了与UIImageView相同的问题,并发现它隐藏的原因是因为我在循环中过早地调用它。自从最新更新以来,如果我尝试从nib访问@IBOutlet,我只能在viewDidAppear方法中这样做。如果我在viewDidLoad或viewWillLoad方法中尝试,那么插座会隐藏起来。
在这种情况下,我只是通过代码下面的两行改变从正方形一个UIImageView到圈子:
cell.pictureImageView.layer.cornerRadius = cell.pictureImageView.frame.size.width/2;
cell.pictureImageView.clipsToBounds = true;
再次,这仅适用的vieDidAppear方法。有没有UITableViewCell的viewDidAppear方法?我把同样的两行的cellForRowAtIndexPath和图像消失:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: K.Cell, for: indexPath) as! TimelineTableViewCell
//Turn profile picture into a circle
cell.pictureImageView.layer.cornerRadius = cell.pictureImageView.frame.size.width/2;
cell.pictureImageView.clipsToBounds = true;
return cell
}
我也试了一下在自定义单元格的awakeFromNib方法,同样的事情发生了......图像中消失:
override func awakeFromNib() {
super.awakeFromNib()
cell.pictureImageView.layer.cornerRadius = cell.pictureImageView.frame.size.width/2;
cell.pictureImageView.clipsToBounds = true;
}
任何帮助非常感谢,谢谢大家!
干杯,
Ç
我知道我早调用它,这就是问题所在。高度和宽度都是在故事板中设置的,但如果我在cellForRow中进行设置,并在它自然调用之前实例化ImageView,则会丢失imageview的所有其他预设属性。我的问题是**,当*,在循环中,imageview是否被实例化...即,它是什么方法,所以我可以访问它。 –
请参阅我的编辑。也许这有助于你? –
调用layoutIfNeeded,你可以像viewDidAppear –