Objective c 将NSString格式的数据从LoginViewController传递到FirstViewController
LoginViewController是我的初始视图控制器。电子邮件地址是LoginViewController中的一个输入,我正在尝试将其发送到FirstViewController。我浏览了这里发布的许多解决方案,但没有找到指向我答案的链接。 请看一下我的代码,告诉我哪里出错了。我在这一点上被困了好几天。我的主要问题是,当我打印emailString以查看它是否被传送到FirstViewController时,它的输出显示为null 仅供参考-我正在使用故事板。我有一个选项卡栏控制器,它有三个选项卡,FirstViewController是第一个选项卡页面 LoginViewController.hObjective c 将NSString格式的数据从LoginViewController传递到FirstViewController,objective-c,ios6,Objective C,Ios6,LoginViewController是我的初始视图控制器。电子邮件地址是LoginViewController中的一个输入,我正在尝试将其发送到FirstViewController。我浏览了这里发布的许多解决方案,但没有找到指向我答案的链接。 请看一下我的代码,告诉我哪里出错了。我在这一点上被困了好几天。我的主要问题是,当我打印emailString以查看它是否被传送到FirstViewController时,它的输出显示为null 仅供参考-我正在使用故事板。我有一个选项卡栏控制器,它有三
#import <UIKit/UIKit.h>
#import "FirstViewController.h"
@interface LoginViewController : UIViewController{
NSString *email;
}
- (IBAction)LoginButton:(id)sender;
- (IBAction)CancelButton:(id)sender;
- (IBAction)dismissKeyboard:(id)sender;
@property (weak, nonatomic) IBOutlet UITextField *EmailField;
@property (weak, nonatomic) IBOutlet UITextField *PasswordField;
@end
#import <UIKit/UIKit.h>
#import "LoginViewController.h"
@interface FirstViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *emailLabel;
@property (nonatomic, retain) NSMutableData *receivedData;
@property (copy) NSString *emailString;
FirstViewController.h
#import <UIKit/UIKit.h>
#import "FirstViewController.h"
@interface LoginViewController : UIViewController{
NSString *email;
}
- (IBAction)LoginButton:(id)sender;
- (IBAction)CancelButton:(id)sender;
- (IBAction)dismissKeyboard:(id)sender;
@property (weak, nonatomic) IBOutlet UITextField *EmailField;
@property (weak, nonatomic) IBOutlet UITextField *PasswordField;
@end
#import <UIKit/UIKit.h>
#import "LoginViewController.h"
@interface FirstViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *emailLabel;
@property (nonatomic, retain) NSMutableData *receivedData;
@property (copy) NSString *emailString;
我也尝试在LoginViewController中实现prepareFOrSegue方法。但它仍然没有做出任何改变。这是我用它写的代码
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"showDetailSegue"])
{
NSString *email = EmailField.text;
NSLog (@"++++++++++ %@", email);
FirstViewController *fvc = [segue destinationViewController];
fvc.emailString=email;
}
}
情节提要截图:
如果您使用的是故事板,我强烈建议您使用segues调用不同的视图控制器。这样你可以相对容易地推送vc和传递信息 您可以在登录VC中重写本机方法prepareForSegue,并在那里设置属性。您可以将您的segue id命名为故事板中的任何内容
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"firstVC"]) {
FirstViewController *firstVC = [segue destinationViewController];
firstVC.emailString = EmailField.text;
}
}
如果你真的想,我建议你不要使用静态变量
默认值
[[NSUserDefaults standardUserDefaults]
setObject:EmailField.text forKey:@"emailString"];
以后再拿回来
NSString *emailString = [[NSUserDefaults standardUserDefaults]
stringForKey:@"emailString"];
NSLog(@"%@",emailString);
我会将电子邮件和密码安全地保存在IOS密钥链中,而不是在视图之间传递 我找到了解决办法 我只需要在prepareForSegue中添加这三行代码,我的程序就可以运行了
FirstViewController* fvc = [[FirstViewController alloc] init];
UITabBarController *tbc = [segue destinationViewController];
fvc = (FirstViewController *) [[tbc customizableViewControllers] objectAtIndex:0];
谢谢大家 你能在黑板上贴一张截图吗?