2

問題: 特定の を選択するとuitableviewcell、新しいDetailViewControllerが開かれます。コードを書きましたdidSelectRowAtIndexPathが、セルをクリックすると実行時エラーが表示されます。

で呼び出してみまし[self.navigationController presentModalViewController:jacket animated:YES ];たが、そうするとビューコントローラーが開かれません。

私が試した別の方法は、によるもの [self.navigationController performSegueWithIdentifier:@"JacketDetails" sender:self ];です。

セグエに特定の識別子があり、インスペクターに「JacketDetails」がありますが、ここで実行エラーが発生します。UITABLEVIEWCELLからまでのセグエをフックしましたVIEWCONTROLLER

行をクリックすると、JacketDetailViewController開く必要があります。JacketDetailViewControllerクラスを作成New ViewControllerし、インスペクターでこのクラスを設定しました。

セグエが表示されない理由がわかりません。インスペクターで識別子を指定し、tableviewcell新しいView Controllerに適切にフックしました。

JacketDetailViewControllerジャケットの一覧を表示したい。現在は空白ViewControllerです。

私のコードは以下です。解決策を提案していただけますか?私はこの分野の独学初心者です。私はいくつかの小さな間違いを犯したかもしれません。問題をグーグルで検索して解決しようとしましたが、ここで数日間立ち往生しています。

TshirtDetailViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.

    [tableView deselectRowAtIndexPath:indexPath animated:YES ];

    JacketDetailController *jacket =[[JacketDetailController alloc]init];

    NSInteger index =indexPath.row;

    NSLog(@"Row:%d",index);


    NSString *titleString = [[NSString alloc] initWithFormat:[jackets objectAtIndex:indexPath.row]];


    NSLog(@"%@",titleString);
    jacket.title=titleString;


    // ...
    // Pass the selected object to the new view controller.

    [self.navigationController performSegueWithIdentifier:@"JacketDetails" sender:self ];


  //  [self.navigationController presentModalViewController:jacket animated:YES ];

}


@end

コンソールのエラー:

2013-01-07 10:52:21.020 KidsShopee[617:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<UINavigationController: 0x6a5fac0>) has no segue with identifier 'JacketDetails''

*** First throw call stack:

(0x13bf052 0x1550d0a 0xdd24b 0x3e8e 0xa671d 0xa6952 0x92e86d 0x1393966 0x1393407 0x12f67c0 0x12f5db4 0x12f5ccb 0x12a8879 0x12a893e 0x16a9b 0x1b08 0x1a65 0x1)
terminate called throwing an exception(gdb) 
4

5 に答える 5

3

次の行でビューを開いてみてください。

    YoutubeViewController *objYoutubeViewController = [[YoutubeViewController alloc]initWithNibName:@"YoutubeViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:objYoutubeViewController animated:YES];
    [objYoutubeViewController release];

YoutubeViewController の代わりに、View Controller クラス名を指定し、これらの行を変更します

あなたとcheck.Okによると、ストーリーボードを使用している場合は、以下のように試してください:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 bookmarkViewController *myVC = (bookmarkViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"bookmarkViewController"]
[self presentModalViewController:myVC animated:YES];

ブックマークViewControllerの代わりに、コントローラー名を指定して確認してください。ドラッグ アンド ドロップ ビューで

メインストーリーボードのコントローラーは、以下の画像のように正しいクラス名を付けます:ここに画像の説明を入力

私のbookmarkViewController名の代わりに、あなたが開きたいView Controller名を与えてください。

于 2013-01-07T05:30:32.710 に答える
1

performSegueWithIdentifier:sender:ナビゲーション コントローラーを呼び出さないでください。カスタム viewController のみがセグエを持つことができます。自分で呼び出します。

交換

[self.navigationController performSegueWithIdentifier:@"JacketDetails" sender:self ];

[self performSegueWithIdentifier:@"JacketDetails" sender:[tableView cellForRowAtIndexPath:indexPath]];
于 2013-01-07T06:16:38.090 に答える
0

「識別子 'JacketDetails' のセグエがありません」というエラーに基づいて、セグエの呼び出しに問題があります。ストーリーボードでシークに付けた名前をコピーして .m ファイルに貼り付けない限り、シーク名が正しく機能しないという問題があることがわかりました。スペルと大文字と小文字が正しい場合でも、コピーして貼り付けることで問題が修正されることが何度もありました。

于 2013-01-07T05:42:01.030 に答える
0

ストーリーボードでテーブル ビュー セルから別のコントローラーにセグエを接続した場合、セグエを起動するためにこのコードはまったく必要ありません。必要な情報を詳細コントローラーに渡すために prepareForSegue を実装する必要がありますが、他のコードは必要ありません。

于 2013-01-07T05:42:15.057 に答える
0

これで試すことができます-

JacketDetailController *jacket =[[JacketDetailController alloc]initWithNibName:@"JacketDetailController" bundle:nil];];///Change string as your nib name.

ならばそのナビベースアプリは――

[self.navigationController pushViewController:jacket animated:YES];

次に、そのviewControllerベースアプリケーションです-

[self presentModalViewController:jacket animated:YES];
于 2013-01-07T05:31:50.347 に答える