0

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

所以我创建了两个视图,在第一个视图中放置了一个按钮和一个标签,并使用鼠标右键单击将按钮从第一个视图链接到第二个视图并拖动一条带有动作模态的线。

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

ViewController2.h

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

- (IBAction)passTextToVC2Button:(id)sender;

视图控制器2.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 下,打开卷曲动画。

我也尝试使用:

[self dismissViewControllerAnimated:YES completion:nil];

代替:

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

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

正如我所说,我正在学习,所以我是初学者,请耐心等待。

4

1 回答 1

1

这样做的方法是定义一个您的第一个视图控制器符合的委托协议,并且您的第二个视图控制器可以发送一条消息以传回该值。

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

更新

我已将示例更改为带有 ARC 和 Storyboards 的 iOS6 新项目。

于 2013-02-04T10:51:37.800 回答