4

私は IOS 開発に非常に慣れていないので、iPhone アプリの開発中に使用されるすべてのメカニズムを実際に知っているわけではありません。

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

コンテキスト:

基本的にログインページで構成され、ユーザー/パスワードシステムを備えた最初のページがあります。[送信] ボタンをクリックして呼び出されるセグエを作成しました。コードは次のとおりです。

- (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'

ストーリーボードは次のとおりです。

絵コンテ

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

誰かが私を案内してくれませんか?

どうもありがとう !

4

3 に答える 3

0

エラーの見た目からすると、segue.destinationViewControllerはあなたが思っているものではないようです。ナビゲーションコントローラーがミックスに含まれているようです。

ストーリーボードなしで診断するのは少し難しいですが、試してみてください。

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

それでも問題が解決しない場合は、2行目にブレークポイントを設定し、nabコントローラーを調べて、HomeControllerがスタックのどこにあるかを確認することをお勧めします。

于 2012-04-30T12:41:06.637 に答える
0

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

 [self.navigationController pushViewController:projectManagementView animated:NO];
于 2012-04-30T13:26:41.993 に答える
0

あなたはios5のようにそれを行うことができます:

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

ビューの1つから別のビューへのセグエを作成しますが、ボタンなどを介してではなく、最初のビューからセグエを2番目のビューにドラッグするだけで、プロセスが完了したら上記のコードを呼び出すだけです.

お役に立てれば..

編集: ストーリーボードでセグエに名前を付ける必要があります。それをクリックして、右側のインスペクターで名前を付けます.

于 2012-04-30T13:46:50.570 に答える