如何在自定义函数中创建动态窗口小部件并在viewDidLoad中调用它们?

时间:2013-11-29 14:42:43

标签: ios objective-c

因为我是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];
}

以及此方法中更多这样的动态小部件。现在我尝试创建一个自定义函数来创建动态TextField并在viewdidLoad

中调用它
-(TextField)createDynamicTextField :(TextField *) textField{
//Do Something Here
}

我不知道在这之后应该怎么做。

请告诉我如何在此自定义UITextField类型方法中创建动态TextField并在viewDidLoad中调用它。由于它是一个UITextField类型函数,我将返回文本字段并存储在我上面创建的全局文本字段中

2 个答案:

答案 0 :(得分:0)

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];
}

答案 1 :(得分:0)

你可以这样做:

- (UITextField *)createDynamicTextField
{
    UITextField *tempTF = [[UITextField alloc] initWithFrame:CGRectMake(10.0f,30.0f,3000.0f,30.0f)];
    tempTF.delegate = self;
    tempTF.borderStyle = UITextBorderStyleRoundedRect;
    return tempTF;
}

然后在你的viewDidLoad:

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;
}

然后你不需要你班上的任何代码。