创建了一个对象MyTextBoxCreator。我需要动态制作大量文本框。我希望能够将框架传递给方法。
.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;
}
当我尝试使用myRect为CGRect创建文本字段时,我收到错误:
Sending 'CGRect *' (aka 'struct CGRect *') to parameter of incompatible type 'CGRect" (aka "struct CGRect')
我不明白传递CGRect有什么问题......
答案 0 :(得分:8)
不要将指针传递给CGRect
,只需传递结构本身。
-(UITextField *) standardTextField: (CGRect) myRect;
请注意,它是结构,而不是实际的对象。
但是,如果你需要传入指向结构的指针,你可以取消引用它:
...
-(UITextField *) standardTextField: (CGRect *) myRect {
CGRect rectStruct = *myRect;
...
UITextField *myTextField = [[UITextField alloc] initWithFrame:rectStruct];
...
答案 1 :(得分:2)
initWithFrame:
需要CGRect
。您正在传递CGRect*
参数。
我认为更改standardTextField:
签名以取代CGRect
会更简单。
否则,您需要取消引用CGRect
指针:
UITextField *myTextField = [[UITextField alloc] initWithFrame:*myRect];