如何从iOS中其他viewcontroller的textview获取NSDictionary的值

时间:2013-08-22 05:40:38

标签: ios objective-c nsdictionary

我有一个登录屏幕,用户输入电子邮件ID。当用户登录并转到其他视图控制器时,我需要将电子邮件ID传递给我在另一个视图控制器中提到的NSDictionary对象。

NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"abc@xyz.com", @"EmailID", @"http://www.yahoo.com", @"URL", @"344", @"Phone", @"", @"UserID", nil];

如果我将@"abc@xyz.com"替换为[NSString stringWithFormat:@"@", firstViewControllerObject.emailIdTextField.text]并尝试在日志中获取输出,则会得到一个空值。

如何将用户输入的电子邮件ID传递给NSDictionary对象并获取日志中的值?

使用Xcode 4.6,我不使用故事板。在我的项目中使用XIB

5 个答案:

答案 0 :(得分:1)

我认为问题是格式字符串。我想你忘记了“%”的标志。请尝试以下方法:

[NSString stringWithFormat:@"%@", firstViewControllerObject.emailIdTextField.text]

希望这有帮助!

答案 1 :(得分:1)

正如我在评论中所述,当论证为[NSString stringWithFormat]时,使用"%@"是没有意义的,因为它什么都不做,所以只需这样做:

NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
    firstViewControllerObject.emailIdTextField.text ... ];

答案 2 :(得分:0)

对于您的其他视图控制器(我们称之为otherViewController)来访问该字段,otherViewController需要“拥有”firstViewControllerObject对象。即firstViewControllerObject对象需要在otherViewController内实例化。 就您的应用中的事物顺序而言,应首先实例化otherViewController,并在其中firstViewControllerObject实例化并显示presentViewController:animated:completion:

答案 3 :(得分:0)

似乎anotherViewController逻辑上需要电子邮件属性,而firstViewController拥有anotherViewController。 因此,我认为您可以将anotherViewController设为名为email的属性,并让fistViewController在创建email时将viewController传递给它。

答案 4 :(得分:0)

我心里有两个解决方案......

说你的两个观点是FirstViewControllerSecondViewController

  1. 只需在名为SecondViewController的{​​{1}}中定义一个属性,当用户登录时,您正在启动emailID,并使用字符串设置SecondViewController属性电子邮件ID emailID中的值。

  2. 您也可以编写自己的textField来实现protocol设置电子邮件。