【问题标题】:Linking a new viewcontroller to Storyboard?将新的视图控制器链接到情节提要?
【发布时间】:2011-12-20 04:56:01
【问题描述】:

可能有一个简单的解决方案,但我想不通。

我正在为界面使用故事板。

我从标签栏控制器开始,但在允许用户使用应用程序之前,用户必须通过登录视图验证自己的身份,该登录视图在开始时以模态方式推送。

我想在同一个故事板上配置登录视图,但我无法弄清楚如何将故事板上的视图控制器和我的代码链接起来。

我做了什么:

  • 创建一个新的 UIViewController 子类槽文件 > 新建 > 新文件。
  • 在故事板中拖动一个新的 UIViewController
  • 在自定义类选项卡中设置类
  • 拖动 UILabel 进行测试。
  • 运行

没有标签...

【问题讨论】:

    标签: ios xcode uiviewcontroller interface-builder ios5


    【解决方案1】:

    拉入一个新的 UIViewController,它将作为 MainStoryboard 上的登录视图控制器。在属性检查器中,将标识符更改为 LoginViewController(或适当的东西)。然后添加

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
    
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
        [vc setModalPresentationStyle:UIModalPresentationFullScreen];
    
        [self presentModalViewController:vc animated:YES];
    }
    

    到第一个视图控制器,登录屏幕将从您的故事板加载并呈现。

    希望这会有所帮助。

    【讨论】:

    • 不,我不是这个意思。我有 .m 和 .h 文件,我不想要 .xib 文件,但在主情节提要中配置视图。
    • 我已经解释了如何在主故事板中创建登录屏幕,这样您就不需要 xib。
    • 但这不是我想要的。例如,当您有一个动态表格视图时,您希望在按下单元格时推送一个视图。但是你怎么能用故事板做到这一点。
    • 我想我不明白这个问题。这是我创建的项目,如果您想快速浏览一下并告诉我它是否有帮助,或者您是否可以澄清我的问题在哪里出错,我们应该能够找到解决方案。 scott-sherwood.com/?attachment_id=512
    • 这几乎就是我想要的。我需要的唯一补充是该登录视图背后的代码。这样我就可以管理登录。 (感谢您帮助我)
    【解决方案2】:

    上面 Scott Sherwood 的答案是我经过大量搜索找到的最正确的答案。虽然根据新 SDK (6.1) 的变化非常小,但 presentModalViewController 显示已弃用。

    对上述答案的改动很小。

     UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
        HomeViewController * hvc = [sb instantiateViewControllerWithIdentifier:@"LoginView"];
        [hvc setModalPresentationStyle:UIModalPresentationFullScreen];
        [self presentViewController:hvc animated:YES completion:nil]; 
    

    【讨论】:

      【解决方案3】:

      我是这个领域的新手。但是如果第一个视图控制器是一个导航视图控制器并且它的根视图控制器是一个表视图控制器。如果您想在单击单元格时推送像 LoginViewController 这样的视图控制器,并且您还想使用导航栏返回表格视图。我推荐这种方式:

      -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {
      
         UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
         UIViewController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"];
         [self.navigationController pushViewController:controller   animated:YES];
      }
      

      这样就可以有导航了。

      对了,不知道为什么会出现你问的这种问题。我猜在代码中创建 loginviewcontroller 时,它的视图不是情节提要中的视图。如果有人知道原因,请告诉我!谢谢!

      【讨论】:

        猜你喜欢
        • 2012-01-02
        • 1970-01-01
        • 2019-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多