2012-04-30 11 views
4

私はIOS開発には全く新しいので、iPhoneアプリを開発する際に使用されるすべてのメカニズムを実際には分かりません。IOS 5 - 別のViewControllerからViewControllerを呼び出す

ここで、私がしようとしているのは、セグを実行した後に別のコントローラを呼び出すことです。

コンテキスト:

は、私は基本的に、ユーザ/パスワードシステムで、ログインページで構成されて私の最初のページを、持っています。 Submitボタンをクリックして呼び出されるセグを作成しました。ここでは、コードです:

- (IBAction)Connect:(UIButton *)sender 
{ 
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"passwordsample", @"usernamesample", 
          nil]; 

    if ((![[dict allKeys] containsObject:TFLogin.text])) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Login or password incorrect" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [alert show]; 
     NSLog(@"Connection Not OK"); 
    } 
    else { 
     [self performSegueWithIdentifier:@"LoginSegue" sender:sender]; 
     NSLog(@"Connection OK"); 
    } 
} 

そして、ここではprepareForSegue機能です:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    HomeController *home = (HomeController *) segue.destinationViewController; 
    home.sentLogin = TFLogin.text; 
} 

事実が、私は(ログインページ)送信ボタンをクリックしたときに、ログはユーザーことを私に示して、ということです正しく見つけ、その後、私は次のようなエラーを取得している:

2012-04-30 11:24:44.630 AppName[1066:f803] -[UINavigationController setSentLogin:]: unrecognized selector sent to instance 0x6d73c30 
2012-04-30 11:24:44.630 AppName[1066:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setSentLogin:]: unrecognized selector sent to instance 0x6d73c30' 

ここで絵コンテです:

Storyboard

第2のNavigationControllerは、Tab Bar Controllerに置き換えられます。しかし、いくつかのテストでは、これを入れました。

誰かが私を案内して、私が間違っていることを教えてもらえますか、または私にストーリーボードとナビゲーションに関する最新のガイドを送ってもらえますか?

ありがとうございます!

答えて

0

エラーの外観では、segue.destinationViewControllerはあなたの考えではないようです。ミックスの中にナビゲーションコントローラがあるような感じです。

それはあなたのストーリーボードなしで診断が、試すには少し難しいです:

UINavigationController *nav = (UINavigationController*)segue.destinationViewController; 
HomeController *home = (HomeController*)nav.topViewController; 

問題が解決しない場合は、2番目の行にブレークポイントを置きたいとのNABコントローラを見てみてHomeControllerがそのスタック上のどこにあるかを見てください。

+0

あなたの答えをありがとう:この役立ちます。..

編集

希望私はあなたが現在持っているストーリーボードを表示するために投稿を編集しました。 –

0

ProjectManagementViewController * projectManagementView = [[ProjectManagementViewController alloc] initWithNibName:@ "ProjectManagementViewController" bundle:nil];

あなたはiOS5をでのようにそれを行うことができます
[self.navigationController pushViewController:projectManagementView animated:NO]; 
+0

私はIOS4で、ストーリーボードが存在しないときに使用されたと思います。私はそれがまだ使用できることがわかりましたが、ストーリーボードの使用により簡単な方法があります。 –

+0

はいu r右... –

0

[self performSegueWithIdentifier:@"your-segue-name" sender:self]; 

あなただけにあなたの最初のビューからドラッグし、別のではなく、ボタンや他の何かを通して、あなたのビューのいずれかからセグエを作成します。あなたのセグを2度目に見て、あなたのプロセスがちょうど上記のコードを呼び出したとき。あなたはそれをクリックして、右側のインスペクタにで命名ストーリーボードであなたのセグエに名前を与える必要がある。..

+0

うーん、それはすでに私がやったことです:) –

関連する問題