数据未传递给视图

Posted

技术标签:

【中文标题】数据未传递给视图【英文标题】:Data is not passed to view 【发布时间】:2011-11-21 17:23:32 【问题描述】:

我想将在tableView 中选择的“人类”传递给detailViewController。我通过 Storyboards 在 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];

提前致谢!

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于数据未传递给视图的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter:将数据从控制器传递到视图

Angular.js 6.1.0 - 变量未传递给视图

在 Laravel 5.1 中传递数据控制器以查看获取未定义的变量

模板未显示通过传递参数使用视图函数从 sqlite 获取的数据(为空白)

如何将数据从剃刀视图传递到 mvc3 中的控制器?

数据未显示在标签中