我在表视图控制器和另一个视图控制器之间传输数据时遇到问题。
在我的发送控制器 - tableviewcontroller.m - 我在prepareForSegue:
FriendDetailViewController *fvc = (FriendDetailViewController *)segue.destinationViewController;
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
PFUser *u = self.friends[path.row];
fvc.nameLabel.text = u.username;
//friendViewController.m (the destination view controller)
- (void)viewWillLoad {
[super viewDidLoad];
if (self.user) {
self.nameLabel.text = self.user.username;
}else{
self.nameLabel.text = @"No data to display";
}
}
标签显示“无数据显示”。
我已阅读其他帖子并查看了教程,但我无法弄明白。
答案 0 :(得分:0)
您只需在prepareForSegue
中设置nameLabel,而不是实际用户,因此在新VC加载时未实例化。
尝试将此添加到prepareForSegue
:
fvc.user = u;
假设您要传递的用户存储在u中,应该这样做(也假设用户是新视图控制器的公共属性。)
答案 1 :(得分:0)
您无法在prepareForSegue
上设置用户界面操作。
您可以在目标user
上定义viewcontroller
变量。
之后,在prepareForSegue
上,您可以将选定的PFUser设置为目标viewcontroller's
user
。
如果您想显示用户的姓名,请使用viewWillAppear
代替viewWillLoad
。
如果您无法理解,请告诉我,我可以为所有人显示详细的代码。
答案 2 :(得分:0)
您可以在FriendDetailViewController的.h文件中放置一个属性,然后在调用之前设置它:
fvc.attribute = u.username;
在此之后,您可以在didSelectRowAtIndexPath中为“fvc”调用pushViewController