我需要在两个ViewControllers
之间传递数据但没有UIButton
,换句话说,我需要访问其他ViewController
中的变量。
我的代码是:
LoginViewController *lvc;
NSString name=lvc.name;
答案 0 :(得分:1)
这个具体案例可能比代表更容易。
从我看到的,你正试图传递登录凭据(名称/登录/密码/东西)。我会根据实际情况使用两件事。
NSUserDefaults
或-performSegueWithIdentifier:
NSUserDefaults是一个文件,只需使用以下命令即可在每个可以阅读和编辑的应用程序中加载:
设置变量:
NSString *aName;
[[NSUserDefaults standardUserDefaults]setObject:aName forKey:@"userName"];
获取变量:
NSString *aName = [[NSUserDefaults standardUserDefaults]objectForKey:@"userName"];
请注意,您可以保存以下对象NSDictionary
,NSArray
,NSString
,NSNumber
,NSData
,也许还有一些我忘记了但如果有人可以编辑。
请注意,此文件在每次启动时都会加载,因此您不希望将其用作数据库,而是将更多的小型存储用作易于使用的内容,例如用户名,首选项/设置以及类似内容。
另一种方法是在两个控制器之间使用performsegue
,但这需要storyboards
。
在两个控制器之间拖动一个segue,命名它(例如)fromLoginToHome
。我假设流程从登录控制器进入家庭控制器。
当您在两个视图之间移动时(例如,当用户按下“登录”时),请调用此方法
[self performSegueWithidentifier:@"fromLoginToHome" sender:self];
然后你需要实现这个方法,通常在那里但是在注释块中(当你创建你的Vc时它总是这样)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"fromLoginToHome"]){
HomeViewController *vc = (HomeViewController*)segue.destinationViewController;
vc.myName = _myName;
}
}
答案 1 :(得分:0)
Xcode using delegate to pass data between controllers这是为了让孩子与父母一起使用代理人
对于父母对孩子,你可以简单地使用segues。
HTH!享受编码。
答案 2 :(得分:0)
您可以在此处查看委托方法delegate。你能告诉我你是否在寻找代表
尝试使用如下 FirstViewController.h
@interface FirstViewController: UIViewController
- (void)GetItNow;
FirstViewController.m
- (void)GetItNow{
NSLog(@"I acheived"); }
- (IBAction)goToSecondView:(id)sender {
SecondViewController* Second= [[SecondViewControlleralloc] initWithNibName:@"SecondViewController" bundle:nil];
rqVC.addId = self.addId;
[self.view addSubview:Second.view];
}
SecondViewController.h
@property (nonatomic, assign) id delegate;
SecondViewController.m
- (IBAction)Action_LoadFunds:(id)sender {
[self.view removeFromSuperview];
[_delegate GetItNow];
}