将文本从一个视图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是如何工作的好主意。 祝你好运。