私のアプリケーションでは、UIView をサブクラス化し、.m ファイル (2UIButton と UITextField ) で宣言された 3 つの ivar を持っています。オブジェクト ライブラリから UIView をドラッグしてこのオブジェクトを使用し、それらをサブクラスに変換します。以下は私の実装です
@interface Prescriber()<UITextFieldDelegate>
{
UIButton *_addButton;
UIButton *_lessButton;
UITextField *_valueField;
}
@end
@implementation Prescriber
@synthesize value=_value,intValueofStrig=_intValueofStrig;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
NSLog(@"prescriber called");
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
}
*/
-(void)layoutSubviews
{
if (!_addButton) {
_addButton=[[UIButton alloc]init];
[_addButton addTarget:self action:@selector(addbuttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[_addButton setBackgroundImage:[UIImage imageNamed:@"add1.png"] forState:UIControlStateNormal];
_addButton.layer.cornerRadius=5;
}
if (!_lessButton) {
_lessButton=[[UIButton alloc]init];
[_lessButton addTarget:self action:@selector(lessButoonClicked:) forControlEvents:UIControlEventTouchUpInside];
[_lessButton setBackgroundImage:[UIImage imageNamed:@"Minus.png"] forState:UIControlStateNormal];
}
if (!_valueField) {
_valueField=[[UITextField alloc]init];
_valueField.delegate=self;
}
///positioning the addbutton on left corner and right corner and position and
textfield in the center
}
-(void)layoutSubviews メソッドで構成コードを実行しました。これは、既に xib ファイルにあるため、 -initwithFrame が呼び出されないためです。私が知りたいのは、このメソッドが別の機会に呼び出される可能性があるため、-layoutSubViews で初期化を行うのが正しいかどうかです。または、サブクラス化された View に対しても -viewDidLoad のようなデリゲート メソッドを呼び出すことはできますか?
編集:- IBOutlet を作成することで可能ですが、その方法は私にとって制約です。