在iOS中单击一个按钮即可启动不同的ViewController

brc7rcf0  于 2023-01-06  发布在  iOS
关注(0)|答案(2)|浏览(142)

我的项目是在iOS6.I有三个UIViewController在我的iPhone故事板上。在第一个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];
}
}

shipToDifferentAddress是一个bool变量,告诉启动这个或那个。我记录了两个viewDidLoads,并得到了它们的输出。第二个和第三个UIViewController上都有一些内容,如按钮,标签等。但他们出现黑色。没有内容。我有后退按钮对他们两个,我可以穿越回第一个UIVC从任何一个。那么我错过了什么?我使用segues的情况下,我必须去一个特定的UIVC。现在我有一个选择要么第二或第三。我应该怎么做?请让我知道,如果你需要更多的信息。谢谢。

tjvv9vkg

tjvv9vkg1#

要显示故事板中的ViewController,请执行以下操作:

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

在序列图像板中设置标识符。单击视图,然后在右侧的属性菜单中设置序列图像板ID x1c 0d1x
比你平时推的要多:

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

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

nbysray5

nbysray52#

您已经创建了VC,但它们没有链接到情节提要ITMOrderedItemsVC和ITMShippingAddressVC。因此,您在情节提要中添加的接口不会加载。
您可以为每个VC创建一个单独的xib文件(New〉file...〉User Interface〉View),并将xib文件命名为与viewController相同的名称:

ITMOrderedItemsVC.xib
ITMShippingAddressVC.xib

在这些xib文件中设计界面(它们就像单个实体的故事板一样)。
xib将在您init相应viewController的示例时自动加载。
这将适用于您当前的代码。

相关问题