0

在一个类中,有一个包含所有朋友及其 ID 的列表。现在,当您单击 UITableView 中的项目时,会出现聊天 ( [self performSegueWithIdentifier: @"showChat" sender: self];)。但在 ChatViewController 类中,我需要从 FirstViewController 访问变量 userID。我尝试了在互联网上找到的所有内容,但总是出错或变量为空。在 FirstViewController 中是一个 NSString userid,那么如何在 ChatViewController.m 中访问它?我尝试制作变量@public,我尝试@property使用 readwrite 等等,但它不起作用。例如这个:

FirstViewController *fvc = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
userID = fvc.userID;

只是给出一个空字符串..

感谢帮助!

4

2 回答 2

4

您需要有prepareForSegue:方法来传递变量。

实现方法如下:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"showChat"])
    {
        // Get reference to the destination view controller
        ChatViewController *cvc = [segue destinationViewController];

        // Set the object to the view controller here, like...
        cvc.userID = self.userID;
    }
}

您可以在此处找到有关通过 segue 传递值的教程。

更新

类似的问题已经在这里问过

于 2012-04-09T11:04:36.150 回答
3

你在 ChatViewController 中编写这段代码吧。你在哪里创建了一个新的 FirstViewController 实例。这是新实例的用户 ID 始终为空的问题。

FirstViewController *fvc = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
userID = fvc.userID;

您需要拥有 FirstViewController 的旧实例,或者当您将 FirstViewController 转到 ChatViewController 时,您必须将此值传递给 userID = fvc.userID;

    ChatViewController *cvc = [ChatViewController new];
    cvc.userID = self.userID;
[self.navigationController pushViewController:cvc animated:YES];

请记住,您已经在 ChatViewController 中设置了属性并合成了用户 ID。

于 2012-04-09T11:07:33.530 回答