0

我正在学习 iOS 开发并阅读 Apple 的教程(即“您的第二个 iOS 应用程序”)并构建一个 Bird Watching 应用程序。长话短说,这是一个鸟类列表,您在表格视图中选择鸟类,它会转到一个新视图,显示有关鸟类的更多详细信息。

一切似乎都正常,但是在 segueing 之后新视图没有被填充。它是空的。

我认为它可能在我的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];

在您的 CSBirdDetailViewController viewDidLoad 方法而不是 prepareForSeque: 方法中

prepareForSegue: 方法太早了,无法配置视图。

视图是在第一次访问视图时创建的(延迟加载)。首次启动 CSBirdDetailViewController 时不会创建它。

于 2012-12-29T02:26:06.553 回答