在iOS中单击按钮时启动不同的ViewControllers

时间:2013-01-10 19:55:11

标签: ios uiviewcontroller segue pushviewcontroller choice

我的项目在iOS6中。我的iPhone故事板上有三个UIViewControllers。在第一个UIVC上,我有一个复选框和一个继续按钮。如果选中复选框并单击按钮,则必须启动第二个UIViewController.If复选框未选中,单击按钮启动第三个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是一个bool变量,告诉启动这个或那个。我记录了viewDidLoads,我得到了两个输出。第二个和第三个UIViewControllers上有一些内容,如按钮,标签等。但它们看起来是黑色的。没有内容。我有两个按钮,我可以从其中任何一个回到第一个UIVC。那我错过了什么?我使用了segues incases,我必须去特定的UIVC。现在我可以选择第二或第三。我该怎么办?如果您需要更多信息,请告诉我。感谢。

2 个答案:

答案 0 :(得分:1)

要显示故事板中的ViewControllers,请按照以下步骤操作:

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

在故事板中设置标识符。单击您的视图,然后在右侧属性菜单中设置故事板ID enter image description here

你可以像往常一样推动:

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

虽然这对你有用 - 当使用Storyboard时,理想情况下你想使用Segues。它需要更少的代码。 Here is a good tutorial使用segue推送/显示视图控制器并在它们之间传递数据。

答案 1 :(得分:0)

您已创建VC,但它们未链接到故事板ITMOrderedItemsVC和ITMShippingAddressVC。因此,您在故事板中添加的界面不会被加载。

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

ITMOrderedItemsVC.xib
ITMShippingAddressVC.xib

在这些xib文件中设计接口(它们就像单实体故事板一样)。

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

这适用于您当前的代码。