在同一视图中动态添加视图

时间:2012-07-25 06:17:51

标签: iphone uiview

我有一个视图,其中包含一些文本字段和选择器视图和一个按钮,当单击按钮时,所有这些文本字段和选择器视图应该再次出现在同一视图中。现在我应该如何获取初始视图以及如何加载点击按钮时,与上一个视图相同的视图。

提前致谢..

3 个答案:

答案 0 :(得分:0)

在按钮单击上设置框架和添加子视图(文本字段和选取器视图),您可以将这些子视图显示在主视图中。

否则您最初可以将它们全部放在主视图中并最初隐藏它们。然后在按钮上单击设置Hidden : NO

答案 1 :(得分:0)

这是方法:

  1. 在View控制器上:添加按钮和UIScrollView。

  2. 创建一个独立视图,说MyView包含所有TextFields和Picker。 (您可以通过xib或代码创建)

  3. 在控制器的ViewDidLoad方法中,在UIScrollView上添加此MyView。

  4. 在onButtonPressed上同样在UIScrollView上添加MyView。

答案 2 :(得分:0)

如果我遇到了您的问题,那么此代码可能会对您有所帮助。我只在按钮点击事件中添加文本字段。所以我认为它可能会让你想到另一个观点,你可以用另一个观点做同样的事情。我给你.m文件,希望你能写.h文件。这是我的.m文件看起来像 -

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize btn = _btn; // IBOutlet of UIButton
@synthesize txtFieldOne = _txtFieldOne; // IBOutlet of UITextField
@synthesize txtFieldTwo = _txtFieldTwo; // IBOutlet of UITextField

- (void)viewDidLoad
{
    newYCoordinateForNewTxtFld = 40.0; // newYCoordinateForNewTxtFld is of type CGFloat
    frame = self.txtFieldTwo.frame;    // frame is of type CGRect

    [super viewDidLoad];
}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return true;

}

// TextField Delegate Method you might required in your project
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

- (IBAction)btnClicked:(id)sender
{

    // I am giving u a simple idea, so written simple code. You can make code more usable with ur view by adding various functions, loops, etc ,etc.
    int tagValue = 0;

    UITextField *newTextField = [[UITextField alloc]initWithFrame:CGRectMake(frame.origin.x, frame.origin.y+newYCoordinateForNewTxtFld, frame.size.width, frame.size.height)];
    newTextField.delegate = self;
    newTextField.tag = tagValue++;
    frame = newTextField.frame;
    newTextField.backgroundColor = [UIColor whiteColor];
    [newTextField setBorderStyle:UITextBorderStyleRoundedRect];
    [self.view addSubview:newTextField];

    newTextField = nil;
    newTextField = [[UITextField alloc]initWithFrame:CGRectMake(frame.origin.x, frame.origin.y+newYCoordinateForNewTxtFld, frame.size.width, frame.size.height)];
    newTextField.tag = tagValue++;
    newTextField.delegate = self;
    frame = newTextField.frame;
    newTextField.backgroundColor = [UIColor whiteColor];
    [newTextField setBorderStyle:UITextBorderStyleRoundedRect];
    [self.view addSubview:newTextField];

}
@end