-1

初めてアプリを起動するときにログイン画面を起動したいのですが、他の賢明なアプリは簡単に動作しますが、問題は再びログイン画面に移動することです。

ここに私がdidFiininshで使用しているコードがあります

ユーザーがログイン画面に移動するのは初めてで、次回はsplitViewControllerを表示する必要があります

     [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],@"firstLaunch",nil]];

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {



    [self.window addSubview:[splitViewController view]];

    LoginViewController *targetController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    targetController.modalPresentationStyle = UIModalPresentationFullScreen;


    [self.splitViewController presentViewController:targetController animated:YES completion:nil];

    }

else {


    [self.window addSubview:[splitViewController view]];

}


// my comment[window addSubview:splitViewController.view];
[window makeKeyAndVisible];


return YES;
4

4 に答える 4

3

ログイン画面を一度だけ表示したい場合は、データベースの助けが必要です。

データベーステーブルの操作方法の簡単な例を示します。

テーブル名が 「ログイン」であるとします。

4フィールドにログインテーブルを追加

id - 自動インク。
ユーザー名 - テキスト;
パスワード - テキスト;
ステータス - テキスト、デフォルト 0;

2 つの ViewController を取る

1) LoginViewController
2) HomeViewController

そしてapplication:didFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

     /// here you need to get status from "Login" table 

     if (status == 0)
     {
        /// code of initialize LoginViewController
       self.window.rootViewController = self.LoginViewController;
     }
     else if (status == 1)
     {
          /// code of initialize HomeViewController
       self.window.rootViewController = self.HomeViewController;     
     }
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

上記のコードでは、アプリを起動すると. 初回はログインテーブルからステータスの状態を確認します。

ステータスのデフォルト値を 0 に設定したため、初めてステータス= 0を取得したので、ここでは、

self.window.rootViewController = self.LoginViewController;

その際、ユーザー名とパスワードをログイン画面に入力します。ユーザー名とパスワードを入力した後、 [ログイン]ボタンをクリックします

その時点で再びアプリケーションにスターを付けると、ステータスは 1になります。

self.window.rootViewController = self.HomeViewController;     

そのため、ログイン画面を再度表示することはできません。

于 2013-07-03T09:28:33.563 に答える
0

スキップする必要がある Controller 内に viewDidAppear メソッドを実装してから、viewDidAppear メソッドで、ユーザーを送信するビューへのセグエを次のように実行する必要があります。

- (void)viewDidAppear:(BOOL)animated {

  //if user is already logged in then skip to welcome view
  //implement your login method here

  if ([self isUserLoggedIn]) {
    [self performSegueWithIdentifier:@"WelcomeTo" sender:self];
  }

}

iOS7用

于 2014-03-30T03:47:08.813 に答える
0
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {



[self.window addSubview:[splitViewController view]];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
LoginViewController *targetController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
targetController.modalPresentationStyle = UIModalPresentationFullScreen;


[self.splitViewController presentViewController:targetController animated:YES completion:nil];

}

else {


[self.window addSubview:[splitViewController view]];

}


// my comment[window addSubview:splitViewController.view];
[window makeKeyAndVisible];


return YES;
于 2013-07-03T09:15:25.047 に答える
-1

これを試して...

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];

    [self.window addSubview:[splitViewController view]];

    LoginViewController *targetController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    targetController.modalPresentationStyle = UIModalPresentationFullScreen;


    [self.splitViewController presentViewController:targetController animated:YES completion:nil];

    }

else {


    [self.window addSubview:[splitViewController view]];

}
于 2013-07-03T09:15:16.200 に答える