将文本从一个视图input到另一个视图

我已经尝试了这么多的教程,我想知道为什么我没有得到这样一个简单的问题。 我有一个名为SetBudgetViewController的视图控制器。 我在这个视图中有一个文本字段,我连接了一个名为* amountToSpend的sockets。 我有另一个视图在应用程序的其他地方使用,有一个名为* amountSet的标签。 如何使input到第一个文本字段的数字显示在另一个视图的标签中? 非常感谢你(这让我疯狂)!

首先,在另一个视图控制器中声明一个属性:

@property (strong, nonatomic) NSString *amountToSpend; 

在SetBudgetViewController中,在你的 – (void)prepareForSegue方法中:

 if([segue.identifier isEqualToString:@"YourIdentifier"]) { OtherViewController *vc = segue.destinationViewController; vc.amountToSpend = self.amountToSpend.text; } 

在另一个视图控制器中,显示viewDidLoad中的数量。

 self.amountSet.text = self.amountToSpend; 

编辑2:VC之间传递数据不相互接近的替代scheme。 您可以重复上述操作或使用NSUserDefaults。

在input金额后在SetBudgetViewController中:

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:self.amountToSpend.text forKey:@"AmountToSpend"]; [defaults synchronize]; 

在另一个视图控制器中,显示viewDidLoad中的数量。

 self.amountSet.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"AmountToSpend"]; 

我希望这会为你工作首先查看在哪里设置用户默认

.h文件

 @property(nonatomic,retain) IBOutlet UITextField *txtfield; 

在.m文件中

  @synthesize txtfield; 

现在点击button

  NSString * text = txtfield.text; [NSUserDefault StandardUserDefault] setValue : text forKey : @"textfieldtext"]; 

推动你的观点或目前的模式,只要你想

那么在下一个视图中写如下

 label.text = [NSUserDefaults standardUserDefault]valueForKey :@"textfieldtext"]; 

既然你有很多的教程,我想你已经足够编码,但不熟悉这些概念。

首先,由于这两个控件位于不同的视图控制器中,这意味着您必须在它们之间build立连接,以帮助标签找出您在文本input中input的内容。 连接可以是委托,通知或plist价值,所以你会发现很多解决scheme在这里。

而对于你提到的这种情况,我会build议委托解决scheme。 既然你有教程,尝试find委托部分,并意识到委托做什么,为什么。

首先,您需要一种方法来了解用户在第一个文本视图中input了什么内容。 这样做的一种方法是实现一个UITextField委托并覆盖textFieldDidBeginEditing方法。

接下来,您需要获取input的数据并将其发送到第二个textView。 一个简单的方法是使用NSNotificationCenter。 在你的第一个视图控制器中像这样使用它:

 -(void) textFieldDidBeginEditing:(UITextField *)textField { NSArray* objects = [[NSArray alloc] initWithObjects:[textField text], nil]; NSArray* keys = [[NSArray alloc] initWithObjects:@"text", nil]; NSDictionary* dict =[[NSDictionary alloc] initWithObjects:objects forKeys:keys]; [[NSNotificationCenter defaultCenter] postNotificationName:@"firstTextFieldEditted" object:nil userInfo:dict]; } 

在你的其他视图控制器上,你需要在你的init方法中添加这个:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(modifySecondTextField:) name:@"firstTextFieldEditted" object:nil]; 

并创build以下方法:

 - (void)modifySecondTextField:(NSNotification*) notification { NSString* text = [dict objectForKey:@"text"]; // TODO - update your textfield here } 

如果您需要区分通知的发件人,只需做

 [[NSNotificationCenter defaultCenter] postNotificationName:@"firstTextFieldEditted" object:textField userInfo:dict]; -- notice object:textField. You can then differentiate them by their tag for example. 

这样你就可以参考你的初始文本框,我希望这给你一个关于NSNotificationCenter是如何工作的好主意。 祝你好运。