带有视图控制器的选取器视图

Posted

技术标签:

【中文标题】带有视图控制器的选取器视图【英文标题】:Picker view with View controller 【发布时间】:2014-09-23 00:57:17 【问题描述】:

假设我有 3 个视图控制器,是否可以使用选取器视图来选择视图控制器。如果是这样,有人可以指出我正确的方向。

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 返回 1; - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component return names.count; - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component return [names objectAtIndex:row]; - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component switch (row) case 0: break; default: break;

我正在尝试使用选择器视图来选择称为 TfaViewController 的视图控制器,我是否在正确的轨道上,有人可以帮助我编写在视图控制器之间切换的代码。 抱歉,我的代码设置不正确。

【问题讨论】:

你试过什么?您知道如何从选择器视图中获取用户的选择吗?你知道如何去一个新的控制器吗?把问题分解成各个部分,看看你是否能取得一些进展,如果遇到困难,再提出一个更具体的问题。 感谢您的回复@rdelmar,我用选择器视图做了一些程序,但从未使用选择器视图在视图控制器之间进行选择,我不确定这是否可能,所以我不知道如何使用选择器视图以转到新的视图控制器。我已经在这个网站和谷歌上搜索过,但我没有找到任何可以让我继续前进的东西。 您可以只使用 switch 语句(在选择器的选定行上切换),并在 case 语句中推送、呈现或调用 segue。 我已经编辑了我的问题@rdelmar,你有没有机会帮我解决这个问题。 你想如何在控制器之间切换?您希望将新的推送到导航堆栈,还是以模态方式呈现?你知道如何做这两件事吗?你在为你的控制器使用故事板吗? 【参考方案1】:

你只需要实例化你想去的控制器并展示它,

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

    TfaViewcontroller *tfaVC;
    switch (row) 
        case 0: 
            tfaVC = [self.storyboard instantiateViewControllerWithIdentifier:@"TfaViewController"];
            [self presentViewController:tfaVC animated:YES completion:nil];
            break;
        case 1:
            // do another one here

        default:
            break;
    

您需要确保在情节提要中为控制器提供相同的标识符,就像您在 instantiateViewControllerWithIdentifier: 中传递的那样。

【讨论】:

我在这方面遇到了错误,我在此处和 Storyboard ID 中具有相同的名称。还有什么我需要做的。 TfaViewcontroller *tfaVC = [self.storyboard instantiateViewControllerWithIdentifier:@"TfaViewController"]; [self presentViewController:tfaVC 动画:YES 完成:nil]; 未知类型名称'TfaViewController';你的意思是'UIViewController'和使用未声明的标识符'tfaVC' @Sleeperinn,您是否将 TfaViewController.h 文件导入到您拥有此代码的类中? 是的,并在我正在调用的视图上设置 Storyboard ID @Sleeperinn,我的代码中有语法错误。您需要在 switch 语句之外声明 tfaVC。我已经更新了答案以显示正确的代码。

以上是关于带有视图控制器的选取器视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在视图控制器中为子类选取器视图实现 selectedrow

具有多个文本字段输入视图的多个选取器视图 Swift

UITable 视图界面构建器创建

uitableViewcell 内的 UIPickerView

setDelegate 到我的自定义视图控制器落下无法识别的选择器

viewWillDisappear 被调用两次