无法在表视图和另一个视图控制器之间传递数据

时间:2015-10-01 20:13:11

标签: ios objective-c uitableview cocoa-touch segue

我在表视图控制器和另一个视图控制器之间传输数据时遇到问题。 在我的发送控制器 - 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";
    }
}

标签显示“无数据显示”。

我已阅读其他帖子并查看了教程,但我无法弄明白。

3 个答案:

答案 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