2013-05-03 6 views
12

私はios/xcodeとロードブロッキングを学んでいます。ストーリーボードを元にしたログイン画面の例

私はtabbarcontroller +ナビゲーションベースのデザインを持っています。ユーザーがログインしていない場合はログイン画面を表示する必要があります。ここでは基本的な階層構造を示します。ログインページは、私が続くチュートリアルは置くとして、バーのボタンを「行く」(navigationBarを必要とします。

Storyboard layout

LoginController: (LTController.h,.m) 

Main View:TabBarController> 
        NavigationController>View1>View1a 
        NavigationController>View2 
は、私は、モーダルビュー、デリゲートメソッドなどで、ここの記事をたくさん読んで、ほとんどそれらを、残念ながら私の初心者レベルのために少し頭の上にあるコードスニペットです。

がこれをどのように達成するかについての簡単な説明をお願い申し上げます。Espaciallyどのファイルにノートは変更は素晴らしいことだ必要があります。

よりks

+0

は、あなたが1つの、タブ2つのアイコン&公共のための1つのバーと認証から保護している非公共のための別のものを持って正常に動作しますか? –

+0

@KumarKl No.現在、タブが2つあるタブバーは1つのみです。ログイン画面には、ログインボタンを置くナビゲーションバーがあります。 – aVC

+0

K私はそれを得ました。私はいくつかのものを入れます。 –

答えて

12

ここはシナリオです。とても簡単です。私はそれが役に立つと願っています。 UITableBarControllerについては

enter image description here

その後、あなたのViewControllerクラスファイルにあなたが右の認証資格情報を持っているストーリーボードIDenter image description here

にアイデンティティの名前を与えますか>。?そこには認証のためにいくつかのものがあります。このコードに従ってください。それは右、私はいくつかの明快さを必要とする

- (IBAction)Login:(id)sender { 

    if(authenticated) // authenticated---> BOOL Value assign True only if Login Success 
     { 
      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
      UITabBarController *obj=[storyboard instantiateViewControllerWithIdentifier:@"tab"]; 
      self.navigationController.navigationBarHidden=YES; 
      [self.navigationController pushViewController:obj animated:YES]; 
     } 
+1

お気軽にお問い合わせください、何か問題が起きた場合 –

+1

ありがとうございました。 viewController(あなたはコードを追加するために述べた)によって、あなたはloginViewControllerを意味しましたか? – aVC

+1

はい。 LoginViewControllerまたはViewController権限があります。メインページが正しいログインページ –

10

あなたは良いスタートを切ったようです。タブバーの設計をしているので、ログインページの表示方法と実行時期を選択する必要があります。

タブバーが表示される前に提示するか、最初のビューコントローラにロジックを入れてログインプロセスを開始する必要があります。他の方法もありますが、それらはもっと複雑になり、今私はあなたに基本的な選択肢を与えたいと思っていました。

ここに私がお勧めしたい一般的な考え方があります。

a)ユーザがログインしているかどうかを判断するために、どこかに永続的なストレージ変数を作成します。

b)このフラグのチェックを、タブバーに接続されている最初のView ControllerのViewをロードするメソッドに追加します。

c)ビューコントローラから直接モーダルログインページを表示します。もし彼らがログインしていればそれを却下し、もしそうでなければ、彼らはモーダルページに固執しています。

ので、ここでそれを行う方法を基本的に次のとおりです。説明の目的のために

、私はあなたの最初のビューコントローラを呼び出すために行くだろう - OK - あなたのタブバーコントローラ上の最初のタブ - fviewControllerを?あなたは絵コンテやseguesを使用しているように見えるfviewController.m

-(void)viewDidLoad { 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    if ([[defaults objectForKey:@"loggedIn"]boolValue]) { 
     NSLog(@"user is logged in - do nothing"); 
    } 
    else { 

     NSLog(@"User is not logged in"); 
     [self performSegueWithIdentifier:@"LoginPage" sender:self]; 
    } 

} 

カップルより多くのポイントで

。その場合は、次の操作を行います:

  • ログインページ用の新しいビューコントローラを作成するコントロールがようセグエを識別し、あなたのタブバー
  • の最初のビューコントローラからそれへのセグエ接続をドラッグしますログイン・ビュー・コントローラのための新しいビューコントローラクラスは
  • ユーザーがログインしている場合、あなたはそのバックNSUserDefaultsに保存する必要があり、あなたの認証
  • をあなたのビューを提示し、管理する
  • クレートを「モーダル」 注:複数のユーザーまたは他のスキームがある場合は、現在のユーザーのトラック状況の例で示した単一の値を変更することができます。 また、ログアウトコードがある場合は、フラグを正しく設定する必要があります。 また、ユーザーが頻繁にログインしてログアウトする場合は、ビューの読み込みの代わりにビューが表示されます。

状態反転する:モーダルビューを閉じるには

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setValue:[NSNumber numberWithBool:YES] forKey:@"loggedIn"]; //in 
    [defaults setValue:[NSNumber numberWithBool:NO] forKey:@"loggedIn"]; //out 

    do this in your login controller 

を。技術的に、あなたはこれを行うには、デリゲートのコールバックを使用する必要がありますが、あなたは物事をシンプルに保つためにしようとしている場合、これは

 [self dismissViewControllerAnimated:YES completion:^{ 

     }]; 

は、だからあなたのロジックは次のようになります[OK]をする必要があり - 彼らはログインしたのですか?はい。ログインした後、YESステータスを設定して閉じます。ログインしなかった場合は何もしないでください。彼らは立ち往生している。

最後に、ログインコントローラをセットアップする必要がある場合、segueが発生する前に、prepareForSegue ...というメソッドを使用して変数を初期化します。チュートリアルをやっているなら、おそらくそれについて読んでいるはずです。

まあ...助けて欲しい。これは非常に基本的なアプローチです。それが有効になっても、セキュリティと機能を引き続き追加できます。

最高の運。

+0

詳細をありがとうございます。はい、私は多くのチュートリアルを行っています。残念ながら、私はObj Cを含めて最初から始めているので、私のオッズと戦っています。ほんとうにありがとう。私はログイン、segueとものをカバーしています。モーダルビューのディスプレイは私に悪夢を与えていました。私はこれを試してみる。 – aVC

+0

私は両方の答えを受け入れることができたらいいと思う。私はあなたをアップアップしています。私は今NSUserdefaultsのチュートリアルにいます。それに言及してくれてありがとう。そのような細部と忍耐をもう一度ありがとう。 – aVC

+1

ログイン画面にセグを表示すると、ウォークスルーを解除してログイン画面を閉じることができます。 http://stackoverflow.com/questions/12561735/what-are-unwind-segues-for-and-how-to-use-them –

関連する問題