由于我是iOS开发的新手,我想知道应该如何创建一个自定义方法来创建TextField或按钮,因为如果我将所有动态小部件都放在viewdidLoad
方法中,那么将整个代码放在一个函数中会变得非常巨大,也不是一个好的做法。
这是我的viewDidLoad
方法
-(void)viewDidLoad{
[super viewdidLoad];
self.textFiled = [[UITextField alloc] initWithFrame: CGRectMake(10.0f,30.0f,3000.0f,30.0f)];
self.textField.delegate = self;
self.textField.borderStyle = UItextBorderStyleRoundedRect;
[self.view addSubView:self.textField];
}
在这个方法中还有更多类似这样的动态小部件。现在我尝试创建一个自定义函数来创建一个动态文本字段,并在viewdidLoad
中调用它
-(TextField)createDynamicTextField :(TextField *) textField{
//Do Something Here
}
我不知道在这里之后该怎么办。
请告诉我如何在这个自定义UITextField类型方法中创建动态TextField,并在viewDidLoad中调用它。由于它是UITextField类型的函数,我将返回文本字段并存储在上创建的全局文本字段中
您可以这样做:
- (UITextField *)createDynamicTextField
{
UITextField *tempTF = [[UITextField alloc] initWithFrame:CGRectMake(10.0f,30.0f,3000.0f,30.0f)];
tempTF.delegate = self;
tempTF.borderStyle = UITextBorderStyleRoundedRect;
return tempTF;
}
然后在您的视图中DidLoad:
self.textField = [self createDynamicTextField];
[self.view addSubview:self.textField];
或者,如果UITextField大小相同,您甚至可以将其子类化,并创建一个名为的新方法
- (UITextField *)initCustomFieldWithDelegate:(id<UITextFieldDelegate>)delegate
{
self = [super initWithFrame:CGRectMake(10.0f,30.0f,3000.0f,30.0f)];
if (self) {
self.delegate = delegate;
self.borderStyle = UITextBorderStyleRoundedRect;
}
return self;
}
那么您的类中就不需要这些代码了。
it becomes so huge and also not a good practice to place whole code in one functions.
然后把它分成几个小函数,一个用来添加按钮,一个用于添加文本字段。。。。
老实说,不能因为代码太长就停止在viewDidLoad中添加内容。
在这个自定义方法中,只需添加视图:
-(TextField)createDynamicTextField :(TextField *) textField{
self.textFiled = [[UITextField alloc] initWithFrame: CGRectMake(10.0f,30.0f,3000.0f,30.0f)];
self.textField.delegate = self;
self.textField.borderStyle = UItextBorderStyleRoundedRect;
[self.view addSubView:self.textField];
}