我想将在tableView中选择的“人类”传递给detailViewController。我通过情节提要板在Interface Builder中将它们连接起来,并设置了自己的segue标识符。 NSLog被调用,但返回(null)。另外,在detailView中,除了默认内容外,什么都没有显示。

我的tableViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"didSelectRow"]) {
    DetailViewController *detailViewController = (DetailViewController *)[segue destinationViewController];
    Human *employee = [[Human alloc] init];
    employee = [people objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
    [detailViewController setHuman:employee];

}
}


还有detailViewController

-(void)setHuman:(Human *)human
{
NSLog(@"%@",employee.name);
employee = human;
nameLab.text = employee.name;
descriptionLab.text = employee.description;
imageViewBig.image = [employee imageForName];
}


提前致谢!

最佳答案

human中的变量setHuman包含employee。因此,应在函数中将变量human分配给@propertyhuman DetailViewController。或者更好的是,只需从外部分配属性:detailViewController.human = employee

您的NSLog返回null,因为您在将human分配给employee之前调用了它。

也许选择较少重复的ivar名称会有所帮助。

关于iphone - 数据未传递给查看,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8215832/

10-11 15:38