使用Xcode 4.6在两个视图之间传递数据

时间:2013-02-04 10:43:03

标签: uiviewcontroller ios6

我正在学习Object-C,我正在编写一个测试应用程序来学习。 这是一个简单的应用程序,在第一个视图中按下按钮,进入第二个视图(我使用卷曲动画)填充文本字段,然后按一个按钮,在第一个视图中传递字段的内容。 / p>

所以我创建了2个视图,在第一个视图中放置了一个按钮和一个标签,并使用鼠标右键单击第一个视图到第二个视图的按钮,并用动作模式拖动一行。

在第二个视图中,我编写了以下代码:

ViewController2.h

@property (weak, nonatomic) IBOutlet UITextField *firstTextField;
@property (strong, nonatomic) NSString *stringFromVC2;

- (IBAction)passTextToVC2Button:(id)sender;

ViewController2.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.firstTextField.delegate = self;
}

- (IBAction)passTextToVC2Button:(id)sender {
    ViewController *VC2 = [self.storyboard instantiateViewControllerWithIdentifier:@"wb_ViewController"];

    VC2.stringFromTextField1 = self.firstTextField.text;

    [self presentViewController:VC2 animated:YES completion:nil];
}

该应用程序可以工作,但是当我从ViewController2按下按钮并返回到ViewController时,它不会为Curl动画设置动画,只是它从页面底部出现一个ViewController下的新窗口(ViewController)用Curl动画打开。

我也尝试过使用:

[self dismissViewControllerAnimated:YES completion:nil];

而不是:

[self presentViewController:VC2 animated:YES completion:nil];

在这种情况下,它会关闭第二个视图,但第一个视图中的Label不会显示我在第二个视图中插入的文本。

正如我告诉你的那样,我正在学习,所以我是初学者,请耐心等待。

1 个答案:

答案 0 :(得分:1)

执行此操作的方法是定义第一个视图控制器符合的委托协议,第二个视图控制器可以发送消息以传回值。

我不得不几次回答这个问题所以我创建了一个非常简单的example project来准确显示我的意思。下载它,看看如何将数据传回控制器堆栈。

<强>更新

我已经使用ARC和Storyboard将示例更改为iOS6的新项目。