1. ホーム
  2. ios

IBDesignableクラッシュエージェント

2023-09-25 10:29:25

質問

自分で UIButton -を拡張したクラスを作成し、それを @IBDesignable という2つのエラーをInterface Builderで受け取る。

  • Main.storyboard: エラー。IB Designables。自動レイアウトステータスの更新に失敗しました。fd が閉じたため、エージェントがクラッシュしました
  • Main.storyboard: エラー。IB Designables。RandjeUIButton のインスタンスのレンダリングに失敗しました。エージェントがクラッシュしました。

以下は私のコードです。

import UIKit

@IBDesignable
class RandjeUIButton: UIButton {
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        self.backgroundColor = UIColor.blackColor()
    }
}

私はOS X 10.11 beta 2上のXcode 7 beta 2で作業しています(VMで実行中)。

どのように解決するのですか?

XcodeのInterface Builderでは、以下のような実装が必要です。 の両方が必要です。 または どちらでもない の初期化子 @IBDesignable クラスのイニシャライザーは、IBで適切にレンダリングされます。

を実装した場合 required init(coder aDecoder: NSCoder) を実装している場合は init(frame: CGRect) も上書きする必要があります。そうしないと、Xcode が投げるエラーに見られるように、エージェントがクラッシュします。

これを行うには、次のコードをクラスに追加してください。

override init(frame: CGRect) {
    super.init(frame: frame)
}