选择要由Picker View切换到的ViewController

时间:2014-12-27 19:51:48

标签: ios objective-c xcode6 uipickerview

我正在创建一个测验应用,用户可以在第一个屏幕上选择他们想要做的类别。在他们做出选择之后,用户应该按下begin按钮,它将把它带到那个VC。

我不确定每个类别的视图控制器是否是最有效的方法。如果有人提出任何建议,他们将非常感激。

到目前为止,我已经实现了这个:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:    (NSInteger)component
{
    ObjectiveCViewController *objC;
    CViewController *cVC;
    switch (row) {
        case 0:
            objC = [self.storyboard instantiateViewControllerWithIdentifier:@"ObjectiveCViewController"];
            [self presentViewController:objC animated:YES completion:nil];
        break;
        case 1:
            cVC = [self.storyboard instantiateViewControllerWithIdentifier:@"cViewController"];
            [self presentViewController:cVC animated:YES completion:nil];
        break;
    }
}

就切换视图控制器而言,其工作完全正常,但只要选择了一个,它就会将用户带到该视图控制器而不是等待按下按钮。

此外,由于按钮只能链接到一个vc,这也是一个可以接受的解决方案吗?

1 个答案:

答案 0 :(得分:3)

为每个类别设置一个viewcontroller绝对不是要走的路。你需要创建一个QuestionViewController,它知道如何处理和显示Question对象。您可以根据自己的选择获取正确的问题。

至于你在做什么,这可行:

在类继续类别中有UIViewController *viewController属性来存储选定的viewcontroller。

- (void)beginButtonPressed:(id)sender {
    [self presentViewController:self.viewController animated:YES completion:nil];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:    (NSInteger)component
{
    switch (row) {
        case 0:
            self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ObjectiveCViewController"];
        break;
        case 1:
            self.viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"cViewController"];
        break;
    }
}