3

我很抱歉我的英语。

我的问题是如何将数据从登录视图控制器传递到 SWRevealViewController 库的前视图控制器。让我解释一下我的情况。

我的应用程序有一个登录视图。如果登录信息正常,您可以进入应用程序内部,菜单将由 SWRevealViewController 管理。

这是我的故事板:

我的故事板应用程序

为了“记住”谁是登录的用户,我想将一个 ID 从登录视图(在我的故事板中称为“视图控制器”)传递给“HomeappViewController”。

在我的 ViewController prepareforsegue 方法中,我编写了以下代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  if ([[segue identifier] isEqualToString:@"entrataApp"]) {
    SWRevealViewController *destination = [segue destinationViewController];
    UINavigationController *navViewController = (UINavigationController *) [destination frontViewController];
    HomeAppViewController *destViewController = (HomeAppViewController* )[navViewController topViewController];
    destViewController.testoPassato = risposta;
  }
}

在 HomeAppViewController 这是我的 viewDidLoad:

- (void)viewDidLoad{
   [super viewDidLoad];
   // Do any additional setup after loading the view.
   self.title = @"News";

   // Set the side bar button action. When it's tapped, it'll show up the sidebar.
   _sidebarButton.target = self.revealViewController;
   _sidebarButton.action = @selector(revealToggle:);

   // Set the gesture
   [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

   _datiPassati.text = _testoPassato;
}

如您所见,我尝试将包含我的“用户 ID”的“risposta”传递给 destViewController.testoPassato,这是 HomeAppViewController 中的标签,但是当我启动代码时,标签保持为空。

在您看来,我的错误是什么?也许我需要将 homeAppViewController 定义为 frontviewcontroller?我怎样才能做到这一点?

如果我的问题很愚蠢,我很抱歉,但我是 iOS 应用程序开发的新手。

4

1 回答 1

4

我认为您需要通过应用程序知道谁是登录用户,您可以做的是在用户从 Web 服务的响应中登录时存储用户 ID

您可以使用以下方式存储它

[[NSUserDefaults standardUserDefaults] setValue:[dictData valueForKey:@"id"] forKey:@"uid"];

这里 dictData 是我的响应字典,字段是 id

进一步将这些添加到您的常量或 .pch 文件中

#define UserId     [[NSUserDefaults standardUserDefaults] valueForKey:@"uid"]

然后在任何类的任何 viewController 中的任何应用程序中需要的地方使用 UserId。

当您想在应用程序中提供 Logout Facility 时,请提供

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

这些将删除所有密钥,并在您执行应用程序时再次进入登录页面。

于 2014-04-22T12:01:10.430 回答