0

私は iOS 開発を学んでおり、Apple のチュートリアル (つまり、「Your Second iOS App」) を読んで、Bird Watching アプリを作成しています。簡単に言うと、これは鳥のリストです。テーブル ビューで鳥を選択すると、その鳥の詳細を示す新しいビューに移動します。

すべてが機能しているように見えますが、セグエを行った後、新しいビューが入力されません。空です。

私のprepareForSegue:方法にあるのではないかと思いましたが、テストのためにそこに NSLog を入れたときに発生します。

prepareForSegue:メソッドは次のとおりです。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"DetailViewSegue"]) {
        CSBirdDetailViewController *detailViewController = segue.destinationViewController;
        CSBirdSighting *selectedBirdSighting = [self.dataController objectInListAtIndex:[self.tableView indexPathForSelectedRow].row];

        detailViewController.birdSighting = selectedBirdSighting;
        detailViewController.birdNameLabel.text = @"Stinker";
        NSLog(@"HEY THERE!");
    }
}

詳細については、Xcode プロジェクト全体 (やや小さい) を参照してください: http://cl.ly/37041I2K0N24

表示されない理由がわかりません。上記の方法で、destinationViewController (詳細ビュー) のデータをモデル (マスター ビュー/ソース ビュー コントローラーで使用される別のクラス) から設定しています。私が設定したデータは、基本的にクラスが読み取る BirdSighting オブジェクトです。

4

1 に答える 1

1

置いてみる

[self configureView];

prepareForSeque: メソッドの代わりに CSBirdDetailViewController viewDidLoad メソッドで

prepareForSegue: メソッドは、ビューの構成を行うには時期尚早です。

ビューが最初にアクセスされたときにビューが作成されます (遅延読み込み)。CSBirdDetailViewController が最初に開始されたときには作成されません。

于 2012-12-29T02:26:06.553 に答える