問題は簡単です:cellForRowAtIndexpathメソッドを使用してアクセスしようとすると、私のカスタムUITableViewCellのMy @IBOutlet UIImageViewが非表示になります。UIImageViewがXcode8とSwift3で非表示になる
これはSwift 3またはXcode 8のいずれかの問題だと聞いたことがあります(更新後にこの問題が発生したので意味があります)。私はUIImageViewで同じ問題を抱えていて、それが隠されていた理由は、サイクルの早い時期に呼び出していたからです。最新の更新以来、ペン先から@IBOutletにアクセスしようとすると、私はviewDidAppearメソッドでのみ行うことができます。 viewDidLoadメソッドまたはviewWillLoadメソッドで試してみると、アウトレットは非表示になります。この場合
、Iは、単に次の2行のコードを介して円形に正方形からUIImageViewを変更午前:再び
cell.pictureImageView.layer.cornerRadius = cell.pictureImageView.frame.size.width/2;
cell.pictureImageView.clipsToBounds = true;
、これはvieDidAppear方法作品。 UITableViewCellのviewDidAppearメソッドはありますか?私はcellForRowAtIndexPathで同じ2本のラインを入れて、画像が消える:
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;
}
ご協力いただきありがとうございます。
乾杯、
C
私は早くそれを呼んでいる知っている、それがポイントです。高さと幅はストーリーボードに設定されていますが、cellForRowでイメージビューをインスタンス化してから自然に呼び出されると、イメージビューのその他のプリセット属性はすべて失われます。私の質問は**サイクル中に*、イメージビューがインスタンス化されるときです。どのような方法なので、私はそれにアクセスすることができます。 –
私の編集を参照してください。多分これはあなたを助けますか? –
layoutIfNeededを呼び出すと、viewDidAppearのように以前のすべてのプロパティを使用することができます –