如何制作preparForSegue:sender:XCode 6?

时间:2015-07-03 09:18:23

标签: ios objective-c xcode uistoryboard uistoryboardsegue

在我的应用中,我使用段来切换三个视图。每个segmment用容器视图表示,它们根据段隐藏或显示。这就是我的设计工作方式,效果很好。您可以在下面找到图片,这样您就可以更好地理解结构:

enter image description here

我无法在视图控制器中创建一个实例(即用户)来分割容器的视图控制器。我在用户中创建了用户并为其分配了值。用户实例有值,我检查了它。所以,像往常一样用segue,我尝试了prepareForSegue:sender方法来实现我的目的。在表视图的viewLoad方法中(您可以找到表视图:它们中的每一个都附加到具有段的视图控制器中的自己的容器。有3个容器。)表​​视图的用户实例为null。基本上我无法给予它。视图控制器不应该传递用户值吗?它可能是容器视图,但我认为它应该是:)无论如何,请在下面找到我到目前为止所写的内容:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        DovizTableViewController *controller = (DovizTableViewController *)navController.topViewController;
        controller.user = self.user;
}

2 个答案:

答案 0 :(得分:2)

您将删除代码的发件人部分。

它应该是这样的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue{ 
    //your code 
    //check if the next view exists by checking for the id
    if ([[segue identifier] isEqualToString:@"Segue_Name"])
    {
        DovizTableViewController *controller = [segue destinationViewController];
        controller.user = self.user;
    }
}

答案 1 :(得分:0)

试试这个。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
            {
                // Get reference to the destination view controller
                 DovizTableViewController *controller = [segue destinationViewController];

                // Pass any objects to the view controller here, like...
                controller.user = self.user;
            }
    }

希望它有所帮助。