2011-12-07 11 views
0

オブジェクト、MyTextBoxCreatorを作った。私は多くのテキストボックスを動的に作成する必要があります。私はメソッドにフレームを渡すことができるようにしたい。オブジェクトメソッドは、CGRectを渡すのが好きではありません

私はCGRectためmyRectを持つテキストフィールドを作成しようとすると、私はエラーを取得
.h file 
-(UITextField *) standardTextField: (CGRect *) myRec; 


.m file 
-(UITextField *) standardTextField: (CGRect *) myRect 
{ 
    UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 30)]; 

    UITextField *myTextField = [[UITextField alloc] initWithFrame:myRect]; 
    myTextField.font = [UIFont fontWithName:textFieldFont size:textFieldFontSize]; 
    myTextField.borderStyle = UITextBorderStyleLine; 
    myTextField.backgroundColor = [UIColor whiteColor]; 
    myTextField.textColor = [UIColor textFieldTextColor]; 
    myTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
    myTextField.layer.borderColor = [[UIColor textfieldBorderColor]CGColor]; 
    myTextField.layer.borderWidth = 1.0f; 
    myTextField.leftView = paddingView; 
    myTextField.leftViewMode = UITextFieldViewModeAlways; 
    myTextField.clearButtonMode = UITextFieldViewModeWhileEditing; 

    return myTextField; 
} 

Sending 'CGRect *' (aka 'struct CGRect *') to parameter of incompatible type 'CGRect" (aka "struct CGRect') 

いただきましCGRectに渡すと間違って、私は理解していない...

答えて

7

CGRectへのポインタを渡さないで、構造体自体を渡すだけです。それは構造、実際のオブジェクトだと

-(UITextField *) standardTextField: (CGRect) myRect; 

注意。

あなたは構造体へのポインタを渡す必要がある場合けれども、あなたはそれを間接参照することができます:

... 
-(UITextField *) standardTextField: (CGRect *) myRect { 
CGRect rectStruct = *myRect; 
... 
UITextField *myTextField = [[UITextField alloc] initWithFrame:rectStruct]; 
... 
+0

: そうしないと、CGRectポインタを参照に解除する必要があります。そのような場合、OPはそれを逆参照する必要があります。あなたは答えについてこれについての行を追加すべきです。 – Macmade

+0

@Macmadeヒントを追加しました。 –

+0

いいえ、ポインタを渡す必要はありません、ちょうど習慣の力としてそれをしました。ありがとう。 – Padin215

2

initWithFrame:CGRectをとります。 CGRect*パラメーターを渡しています。

standardTextField:の署名をCGRectに変更する方が簡単だと思います。たぶん、ポインタが何らかのあいまいな理由で必要とされている

UITextField *myTextField = [[UITextField alloc] initWithFrame:*myRect]; 
関連する問題