如何将文本从一个视图控制器复制到另一个视图控制器?

9 浏览
0 Comments

如何将文本从一个视图控制器复制到另一个视图控制器?

我正在编写一个小的问答应用程序。所以我有一个第一个视图,在这个视图中我要求用户输入他/她的姓名,并有一个按钮作为IBAction,用来进入下一个视图并显示第一个问题。最后,当一个人回答完所有问题时,会出现一个祝贺视图,我想在这个视图中复制输入在第一个视图中的姓名。比如,可能会显示一句话“干得好,John!”我该如何做呢?

在第一个视图(FirstViewController)中,我创建了一个文本框

IBOutlet UITextField *text1;

在最后一个视图中,.h文件中有

IBOutlet UITextField *text2;

以及

-(IBAction)copy:(id)sender;

在.m文件中有

- (IBAction)copy:(id)sender
{
    [text2 setText:[text1 text]];
}

还有

#import "FirstViewController.h"

但是它显示identifier text1 is undefined

我不知道还能做什么...

0
0 Comments

问题的原因是需要将一个视图控制器中的文本复制到另一个视图控制器中,并且这两个视图控制器之间存在中间视图控制器。

解决方法是在最后一个视图控制器中重写- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil方法,在该方法中添加一个参数andUserName:(NSString*)userName,并在.h文件中声明这个方法。然后在初始化最后一个视图控制器时,将用户名传递给最后一个视图控制器。最后,在最后一个视图控制器的实现中,将传递的用户名复制到一个本地变量中,并使用它。

然而,这种解决方法的问题是你需要在每个中间视图控制器中传递用户名,才能将其传递给最后一个视图控制器,这样会显得冗余。

是的,我同意。如果你需要在两个直接的视图控制器之间传递值,这种解决方法是适用的。

0
0 Comments

问题的出现原因:在从一个视图控制器(FirstViewController)复制文本到另一个视图控制器(SecondViewController)时,需要重写SecondViewController的init方法,并在FirstViewController中创建SecondViewController实例时使用该方法进行初始化。

解决方法:

1. 在SecondViewController中重写init方法,添加参数username,将文本赋值给text2.text。

-(id)initWithUsername:(NSString *)username {

//创建实例并赋值

text2.text = username;

}

2. 在FirstViewController中创建SecondViewController实例时,使用上述重写的init方法进行初始化,并将文本1的值传递给username参数。

SecondViewController *second = [[SecondViewController alloc] initWithUsername:text1.text];

通过以上解决方法,可以实现从一个视图控制器复制文本到另一个视图控制器。

0
0 Comments

问题的出现原因是试图从一个新创建的FirstView实例中获取username,这与用户插入文本的FirstView实例不同。然而,可以通过循环遍历视图层次结构(如果没有弹出)来获取FirstView。

解决方法是在FirstView的.h文件中添加一个NSString属性,然后在.m文件中将文本赋值给username。在LastView中,导入FirstView头文件,并使用实例化的FirstView对象来获取username的值。

具体代码如下:

在FirstView的.h文件中添加NSString属性:

NSString *username;
@property (nonatomic, retain) NSString *username;

在FirstView的.m文件中将文本赋值给username:

username = text1.text;

在LastView中导入FirstView头文件,并使用实例化的FirstView对象来获取username的值:

#import "FirstView.h"
FirstView *firstview = [[FirstView alloc] init];
text2 = firstview.username;

希望这样可以解决你的问题!

0