2012-04-06 6 views
0

私は現在、iPhoneアプリケーションの開発を学んでおり、どのように動作しているかを知るためにいくつかのオンラインチュートリアルを作成しました。ストーリーボードとビューの遷移

私は今、かなりのObjective-Cの概念に慣れて、私は2つのビューに基づいた最初のアプリケーションを構築しようとしている:

最初のビューは単純で、「ログインビュー」になりますログインシステムの種類:ログインフィールドとパスワードフィールド、および「接続」ボタン。

2番目のビューは、アプリケーションの「ホームビュー」で、ログイン後に呼び出されます。

ログインビューとログイン後に呼び出されるビューの関係を作るためにプッシュセグを作った。ここではストーリーボードは次のようになります。私は実際に知らない何

Login system storyboard

すると、ログインが成功した場合、他のビューに資格情報が正しいかどうかを確認する関数、およびスイッチを呼び出す方法です。

誰も私を説明することができますか、私にいくつかのヒント/チュートリアルをお願いしますか?ここで

私LoginControllerのソースは次のとおりです。

LoginController.h

@interface LoginController : UIViewController { 
    IBOutlet UITextField *TFLogin; 
    IBOutlet UITextField *TFPassword; 
} 

@property (strong, nonatomic) IBOutlet UITextField *TFLogin; 
@property (strong, nonatomic) IBOutlet UITextField *TFPassword; 

- (IBAction)Connect:(UIButton *)sender; 


@end 

LoginController.m

@implementation LoginController 

@synthesize TFLogin; 
@synthesize TFPassword; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (IBAction)Connect:(UIButton *)sender 
{ 
    if ([TFLogin.text isEqualToString:@"myLogin"] && [TFPassword.text isEqualToString:@"myPassword"]) { 
     [self performSegueWithIdentifier:@"LoginSegue" sender:sender]; 
     NSLog(@"Connection OK"); 
    } 
    else { 
     NSLog(@"Connection Not OK"); 
    } 
} 

@end 

ありがとう!

答えて

1

セグをトリガーする方法は2つあります。簡単な方法は、インターフェースビルダーのボタンから次のView ControllerへのCtrlキーのドラッグだけです。 performSegueWithIdentifier:sender:を呼び出すことで、コードで(IBActionで)行うこともできます。

IBActionをお持ちの場合は、そこのデータを検証できます。

インターフェイスビルダーメソッドを使用している場合、が有効になりません - prepareForSegue:sender:は遅すぎます。とにかく、ここに起こりうる障害があります - 私が思い出すように、UINavigationControllerはその子にprepareForSegue:sender:を転送しません。カテゴリをUINavigationControllerにするか、サブクラス化することで軽減できます。

+0

私は現在、IBでCtrlキーを押しながら直接ドラッグする最初のソリューションを行っています。しかし、今では、ログインビューに添付された.mに認証コードをどこに入れるべきかわかりません。 –

+0

あなたの質問が分かりません。ログインビューのView Controllerに 'prepareForSegue:sender'を実装する必要があります。ボイラープレートUIViewControllerにログインビューが含まれていますか? UIViewControllerの独自のサブクラスを作成する必要があります。 – samson

+0

私はこのサブクラスを作成しましたが、これまで行ってきたことを示すためにコードを編集しました...しかし、ここでは、ビューは常に切り替わります:( –

関連する問題