を使用することができます。は、私は次のように定義された小さなプロトコル持つプロトコルで@IBOutlets(スウィフト)
import UIKit
protocol HasMeterAnimation {
func animateMeter(scrollableView: UIScrollView)
}
をそれは実装のIBOutletsを使用する必要があります:
func animateMeter(scrollableView: UIScrollView) {
let maxYPosTableview = scrollableView.frame.height + scrollableView.frame.origin.y
let progressBarRect = self.progressBar.frame
let rectOfProgressBarInParentView = self.convert(progressBarRect, to: scrollableView.superview)
let maxYPosMeter = rectOfProgressBarInParentView.origin.y + progressBarRect.height
if maxYPosTableview > maxYPosMeter {
if progressBar.isHidden == false {
progressBar.animateProgressBar()
model.shouldMeterAnimate = false
}
}
}
私が望む何私がこの実装をIBOutletsを使ってプロトコル拡張に書き込む方法があるかどうかを知るためには、次のようなものがあります。
protocol HasMeterAnimation {
@IBOutlet var progressBar:AnimatedProgressBar! { get set }
var model: ListItem! { get set }
func animateMeter(scrollableView: UIScrollView)
}
extension HasMeterAnimation {
func animateMeter(scrollableView: UIScrollView) {
let maxYPosTableview = scrollableView.frame.height + scrollableView.frame.origin.y
let progressBarRect = self.progressBar.frame
let rectOfProgressBarInParentView = self.convert(progressBarRect, to: scrollableView.superview)
let maxYPosMeter = rectOfProgressBarInParentView.origin.y + progressBarRect.height
if maxYPosTableview > maxYPosMeter {
if progressBar.isHidden == false {
progressBar.animateProgressBar()
model.shouldMeterAnimate = false
}
}
}
私は多くの方法を試しましたが、私にエラーを与え続けます。ありがとう
'@ IBOutlet'を削除するとエラーが発生しますか?ここでは役に立たない。あなたはどんなエラーを受けていますか? –
私はそれを解決しました。受け入れられた答えは正しいです... IBOutletsはプロトコルで意味をなさない。私はプロトコルでプロパティを定義し、コントローラでIbOutletとして実行しました。 –