1

我的项目在 iOS6 中。我的 iPhone 故事板上有三个 UIViewController。在第一个 UIVC 上,我有一个复选框和一个继续按钮。如果选中复选框并单击按钮,则我必须启动第二个 UIViewController。如果未选中复选框并单击按钮,则启动第三个 UiViewController。我该怎么做?到目前为止,我已经这样做了:

- (IBAction)btnContinue:(UIButton *)sender
{
if (self.shipToDifferentAddress)//Checkbox CLICKED->YES
{
    //Launch ShippingVC
    ITMShippingAddressVC *shippingVC = [[ITMShippingAddressVC alloc]init];
    [[self navigationController]pushViewController:shippingVC animated:YES];
}
else //Checkbox unchecked ->NO
{
    //Launch OrderedItemsVC
    ITMOrderedItemsVC *orderedVC = [[ITMOrderedItemsVC alloc]init];
    [[self navigationController]pushViewController:orderedVC animated:YES];
}
}

self.shipToDifferentAddress 是一个布尔变量,告诉启动这个或那个。我记录了两个 viewDidLoads 并得到了它们的输出。第二个和第三个 UIViewController 上都有一些内容,如按钮、标签等。但它们看起来是黑色的。没有内容。我在它们两个上都有返回按钮,我可以从其中一个返回到第一个 UIVC。所以我错过了什么?我在必须去特定 UIVC 的情况下使用 segues。现在我可以选择第二个或第三个。我该怎么做?如果您需要更多信息,请告诉我。谢谢。

4

2 回答 2

1

要展示 Storyboard 中的 ViewController,请按照以下步骤操作:

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                             bundle: nil];
    ITMShippingAddressVC *viewController = (ITMShippingAddressVC*)[mainStoryboard
                                                                         instantiateViewControllerWithIdentifier: @"ITMShippingAddressVC"];

在情节提要中设置标识符..单击您的视图,然后在右侧的属性菜单中设置情节提要 ID 在此处输入图像描述

比你可以像往常一样推动:

[[self navigationController]pushViewController:viewController animated:YES];

虽然这对你有用——在使用 Storyboards 时,理想情况下你想使用 Segues。它需要更少的代码。这是一个关于使用 segues 推送/呈现视图控制器并在它们之间传递数据的好教程。

于 2013-01-10T20:21:56.677 回答
0

您已经创建了 VC,但它们没有链接到故事板 ITMOrderedItemsVC 和 ITMShippingAddressVC。因此,您在情节提要中添加的界面不会被加载。

您可以做的是为每个 VC 创建一个单独的 xib 文件(新建 > 文件... > 用户界面 > 视图)。将 xib 文件命名为与您的 viewController 相同的名称:

ITMOrderedItemsVC.xib
ITMShippingAddressVC.xib

在这些 xib 文件中设计您的界面(它们就像单实体故事板)。

当您init创建相应 viewController 的实例时,将自动加载 xib。

这将适用于您当前的代码。

于 2013-01-10T20:16:20.807 回答