我正在学习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不会显示我在第二个视图中插入的文本。
正如我告诉你的那样,我正在学习,所以我是初学者,请耐心等待。
答案 0 :(得分:1)
执行此操作的方法是定义第一个视图控制器符合的委托协议,第二个视图控制器可以发送消息以传回值。
我不得不几次回答这个问题所以我创建了一个非常简单的example project来准确显示我的意思。下载它,看看如何将数据传回控制器堆栈。
<强>更新强>
我已经使用ARC和Storyboard将示例更改为iOS6的新项目。