2017-10-10 11 views
1

UIButtonTypeを指定してUIButtonをサブクラス化する方法はありますか?特定のUIButtonTypeを使用してUIButtonをサブクラス化する

タイプが既に設定されているデザイナーでボタンクラスを使用したいと思います。

+0

あなたはそれをサブクラス化でき、AwakeFromNib()メソッドの内部では、デフォルトのためのタイプを設定することができます。しかし、私が知っている通り、私が間違っていれば私を修正してください、デザイナでそのボタンを使用する実際の方法はありません、あなたがデフォルトのボタンを見て、クラスを設定することを期待します。しかし、あなた自身でそれを描き、デザイナーには、道がないことを示したい場合は –

+0

こんにちは、私の答えはあなたを助けましたか? –

+0

'ButtonType'は読み取り専用のプロパティなので、設定できないと思います。デザイナでの使用については、カスタムボタンクラスを作成してデザイナでそのクラスをボタンに割り当てることを意味しました。 – Naomak

答えて

1

UIButtonTypeは読み取り専用プロパティなので、これを行うことはできません。 UIButtonをサブクラス化する

2つだけのシナリオ:

  1. UIbuttonのサブクラスを作成し、それが最初の方法ですラップするパブリックメソッドを作成します。

    public class MyButton : UIButton 
    { 
        public static MyButton CreateButton() 
        { 
         return UIButton.FromType(UIButtonType.Custom) as MyButton; 
        } 
    } 
    

    使用法:あなたが唯一のデザイナーからボタンを作成し、そのクラス enter image description here

    の名前を変更

  2. このようにコードではありませんデザイナーにそれを使用することができます

    MyButton button = MyButton.CreateButton(); 
    

    それはあなたのアプリでCustomButtonという名前のUIButtonのサブクラスを自動的に生成しますデザイナーの他のボタンに割り当てることができます。

    enter image description here

    しかし、私は前述したように、UIButtonTypeは、それが設定されていたら、それを変更する方法読み取り専用のプロパティではありません。

    public partial class CustomButton : UIButton 
    { 
        public CustomButton (IntPtr handle) : base (handle) 
        { 
         this.ButtonType = UIButtonType.Custom; //incorrect , read-only 
    
         this.Font = UIFont.SystemFontOfSize(10); //correct, read-write 
        } 
    } 
    

    RE:Change UIButton type in subclass if button created from storyboard

+0

素敵な答えをありがとう。ええ、私は両方の可能性も見つけました。もしかすると別のやり方があるのではないかと思っていただけです。私はあなたが2番目の答えで説明したようにそれを使用したい、それはあなたがそれのように行うことはできません悲しいです: – Naomak

関連する問題