【问题标题】:ios: selection determine next screenios:选择确定下一个屏幕
【发布时间】:2013-05-23 20:11:35
【问题描述】:

我想制作一个应用程序,用户在进入下一个屏幕之前首先做出几个选择。一种选择是给出一个介于 0 和 10 之间的数字(可能是单卷选择器视图)。一旦选择了一个数字并且已经做出了其他选择,用户选择“完成”。每个数字都链接到不同的屏幕。所以 1 链接到屏幕 A,2 链接到屏幕 B 等。但我不知道我该怎么做。有人能帮帮我吗?谢谢

【问题讨论】:

    标签: iphone ios xcode selection


    【解决方案1】:

    在选择选择器视图的委托方法中,您可能希望使用某种形式的 switch 语句来加载和推送下一个视图控制器。您甚至可以决定从 plist 中加载这些字符串值,以便该类更具可重用性。

    NSInteger selectedNumber; //number from picker
    NSString *nextViewController = nil;
    
    switch (selectedNumber) {
      case 1:
        nextViewController = @"AViewController";
      break;
      case 2:
        nextViewController = @"BViewController";
      break;
      case 3:
        nextViewController = @"CViewController";
      break;
    
      //....
    
      case n:
        nextViewController = @"XViewController";
      break;
      default:
        nextViewController = @"DefaultViewController";
      break;
    }
    
    id viewController = [[NSClassFromString(nextViewController) alloc] init];
    [self.navigationController pushViewController:viewController animated:YES];
    

    【讨论】:

    • 奥利弗,谢谢!还有一个问题(抱歉),nextViewController 会立即出现(在您的回答中),还是用户必须选择“完成”然后才会出现 nextViewController?
    • @Jan.PetersNL 这取决于您将该逻辑放在哪里,您可以将其作为目标添加到 UIButton ,这样当按下它时它将转到下一个屏幕,或者将其放入 @987654322 @delegate 让它在选择时转到 viewController。
    【解决方案2】:

    有一个变量 selectedNumber。当用户从选取器中选择值时,将其保存在 selectedNumber 中。然后你可以使用 switch 来推送不同的视图。或者简单的 if 条件。

    if(selectedNumber == 1){
    push View A
    }
    else if(selectedNumber == 2){
    push View A
    }
    

    【讨论】:

      【解决方案3】:

      我会做的是将pickerview委托给我当前的控制器,并在其中实现方法:

      pickerView:didSelectRow:inComponent:
      

      因此,在选择了已知行后,我会使用 Durgaprasad 所说的 if 条件将用户重定向到想要的视图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-09-02
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多