为什么我的细节视图不能反映我的选择?

时间:2012-12-29 02:11:33

标签: ios xcode ios6

我正在学习iOS开发和阅读Apple的教程(即“你的第二个iOS应用程序”)和构建观鸟应用程序。简而言之,这是一个鸟类列表,你在表格视图中选择了它,然后它会显示一个新视图,显示有关鸟类的更多细节。

一切似乎都有效,但在消除之后,新视图不会被填满。它是空的。

我认为它可能在我的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对象,基本上是该类读取。

1 个答案:

答案 0 :(得分:1)

尝试放置

[self configureView];

在你的CSBirdDetailViewController viewDidLoad方法而不是prepareForSeque:方法

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

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