3

私の英語でごめんなさい。

私の質問は、ログイン ビューコントローラーから SWRevealViewController ライブラリの frontviewcontroller にデータを渡す方法です。私の状況を説明させてください。

私のアプリにはログイン ビューがあります。ログイン情報に問題がなければ、SWRevealViewController によってメニューが管理されるアプリ内に入ることができます。

これは私のストーリーボードです:

ストーリーボード アプリ

ログインしたユーザーを「覚えておく」ために、loginview (「View Controller」と呼ばれるストーリーボード) から「HomeappViewController」に ID を渡します。

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」を HomeAppViewController 内のラベルである destViewController.testoPassato に渡そうとしますが、コードを起動するとラベルは空のままになります。

あなたの意見では、どれが私の誤りですか? たぶん、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 を使用します。

アプリケーションでログアウト機能を提供する場合は、

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

これらはすべてのキーを削除し、アプリケーションを実行するとログインページに移動します。

于 2014-04-22T12:01:10.430 に答える