【问题标题】:UIScrollView and StoryboardUIScrollView 和情节提要
【发布时间】:2014-02-22 22:07:18
【问题描述】:

我正在测试我想在我的应用中包含的东西。我在一个有 UIScrollView 的情节提要中有一个 UiViewController - 我现在想将其他 viewController 添加到这个 scrollView 并在它们之间滑动。

我想将我在情节提要中制作的视图添加到此 UIScrollView 中。可能吗?

我尝试了一些类似的东西:

MYViewController *viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"myView"];

    [self.scrollView addSubview:viewOne.view];

我已将 scrollView 的大小设置为大于屏幕,当主视图加载时,我可以看到有一个滚动视图(滚动条显示)但我的 viewController 不在其中。

有人有什么想法吗?

【问题讨论】:

    标签: ios iphone objective-c uiscrollview storyboard


    【解决方案1】:

    您发布的代码在几个级别上仍然不正确。

    首先,您不应该将 alloc/init 用于视图控制器。您要么需要使用 initWithNibName:bundle:(从 nib 文件创建视图控制器)或 instantiateViewControllerWithIdentifier: 从情节提要加载视图控制器。

    其次,你不应该将视图控制器的视图添加为另一个视图控制器的子视图,除非你使用在 iOS 5 中添加并在 iOS 6 中大大改进的父/子视图控制器支持。如果你做你正在做的事情那么各种事情都无法正常工作:自动旋转、内存不足警告、后台通知等。可能出错的事情的列表是无限的。

    最简单的方法是添加一个容器视图作为框架来容纳您的子视图控制器,然后从您的容器视图中按住控件并拖动到您想要设置为子视图的场景上。这会导致 IB 设置和“嵌入”segue。嵌入 segue 可以完成将一个视图控制器的内容托管在另一个视图控制器中所需的所有内务处理,而无需任何代码。

    您可以在滚动视图的内容视图中创建一个容器视图,然后它就可以正常工作了。

    【讨论】:

    • 嗨 Duncan,请参阅我之前的 SO 问题:stackoverflow.com/questions/21453513/… 虽然 UiScrollView 会更容易获得我想要的效果?
    • 补充:我想要一个滚动视图,这样我就可以在我需要的视图之间滑动并使用segmentcontrolt o 直接进入用户想要的视图
    • Tander,你真正应该做的是使用 UIPageViewController。这可以满足您的所有需求,并且比您想要做的要整洁得多。您可以将其设置为在页面之间滑动,或进行页面卷曲。您还可以轻松添加页面控件,让用户点击切换,页面视图控制器为您管理页面控件。更简洁、更熟悉的 UI。
    【解决方案2】:

    我发现了问题:

    我没有分配和初始化我的 viewController。哎呀。

    这是正确的代码:

    BaseViewController *viewOne = [[BaseViewController alloc]init];
        viewOne = [self.storyboard instantiateViewControllerWithIdentifier:@"myView"];
        [self.scrollView addSubview:viewOne.view];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 2010-11-30
      • 2012-04-27
      相关资源
      最近更新 更多