3

プロトタイプセルから詳細ページ、通常の古いUIViewControllerにリンクするストーリーボードプッシュセグエを備えたUITableViewControllerがあります。ストーリーボードでは、詳細 ViewController には識別子があり、セグエには最初の文字が小文字であることを除いて詳細識別子と同じ識別子があります。さらに、詳細 ViewController にはAttractionDetailViewController、クラス プルダウンで選択された「カスタム クラス」( ) があります。

うまくいきません。問題は、instantiateViewControllerWithIdentifier:@"AttractionDetailsが返されることnilです。

関連コード。まずはprepareForSegueデバッガが入ったことのない方法。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"attractionDetails"])
    {
        AttractionDetailViewController *attrDetailVC = [segue destinationViewController];
    }
}

代わりに、次のメソッドに入ります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //AttractionDetailViewController *attrDetailVC = [[AttractionDetailViewController alloc] init];
    AttractionDetailViewController *attrDetailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"AttractionDetails"];

    NSIndexPath *selIndexPath = [self.tableView indexPathForSelectedRow];
    attrDetailVC.theAttraction = [attractions objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:attrDetailVC animated:YES];
}

instantiateViewControllerWithIdentifier返されるのでnil、もちろん例外がスローされます。本当に興味深いのは、alloc init代わりに回線を使用すると機能することですが、画面はすべて黒です。

とにかく、私はこれについて読んで、いくつかの異なることを試しましたが、まだ困惑しています. 誰か提案はありますか?

4

1 に答える 1

25

問題は、ストーリーボードからマスタービューコントローラー(UITableViewController)をインスタンス化していないため、そのstoryboardプロパティがnilであるということです。

于 2012-05-02T16:25:51.507 に答える