将文本输入从一个视图输入到另一个视图

时间:2013-07-01 01:43:13

标签: iphone ios uiviewcontroller uilabel transfer

我已经尝试过这么多教程,我想知道为什么我没有得到这么简单的问题。我有一个名为SetBudgetViewController的视图控制器。我在此视图中有一个文本字段,我已将其连接为名为* amountToSpend的插座。我有另一个在app中其他地方使用的视图,它有一个名为* amountSet的标签。如何将输入第一个文本字段的数字显示在另一个视图的标签中?非常感谢你们(这让我很生气)!

4 个答案:

答案 0 :(得分:2)

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

@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之间传递数据的替代方案彼此不相近。您可以重复上述操作或使用NSUserDefaults。

在输入金额后的SetBudgetViewController中:

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

在另一个视图控制器中,在viewDidLoad中显示金额。

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

答案 1 :(得分:1)

我希望这对你有用 首先查看在何处设置用户默认值

.h文件

@property(nonatomic,retain) IBOutlet UITextField *txtfield;
<。>文件中的

  @synthesize txtfield;

现在点击按钮

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

根据需要推送您的视图或呈现模式

然后在下一个视图中写如下

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

答案 2 :(得分:0)

由于你有很多教程,我猜你已经足够编码但不熟悉这些概念..

首先,由于这两个控件位于不同的viewcontrollers,这意味着你必须在它们之间建立一个连接,以帮助标签找出你在文本输入中输入的内容。 连接可以是委托,通知或plist值,所以你会在这里找到很多解决方案。

对于你提到的这种情况,我建议委托解决方案。 由于您有教程,请尝试查找委托部分并了解委托的作用和原因。

答案 3 :(得分:0)

首先,您需要一种方法来了解用户何时在您的第一个文本视图中输入了内容。一种方法是实现UITextField委托并覆盖textFieldDidBeginEditing方法。

接下来,您需要获取输入的数据并将其发送到第二个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];

并创建以下方法:

- (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的工作原理。祝你好运。