我的项目在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。现在我可以选择第二或第三。我该怎么办?如果您需要更多信息,请告诉我。感谢。
答案 0 :(得分:1)
要显示故事板中的ViewControllers,请按照以下步骤操作:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle: nil];
ITMShippingAddressVC *viewController = (ITMShippingAddressVC*)[mainStoryboard
instantiateViewControllerWithIdentifier: @"ITMShippingAddressVC"];
在故事板中设置标识符。单击您的视图,然后在右侧属性菜单中设置故事板ID
你可以像往常一样推动:
[[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。
这适用于您当前的代码。