我这里可能有一个奇怪的 VC 结构,我只是让它有点陌生,导致它崩溃
UIViewController (contains->) UIContainerView (embeds ->) UIScrollView (contains ->) UIView
我有最终的 UIView,因为我不知道如何使 ScrollView 遵守某些大小限制,所以我只添加了一个“内容 View ”。
问题是,现在“内容 View ”的数据没有加载
内容 View 的日志是:
<UIView: 0x81cd510; frame = (-306 0; 612 792); autoresize = TM+BM; layer = <CALayer: 0x81c2000>>
ScrollView 的日志是
<UIScrollView: 0x81e5e90; frame = (0 0; 0 0); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x81e67b0>; layer = <CALayer: 0x81e6060>; contentOffset: {0, 0}>
所以它似乎没有加载......什么给了?如何让它加载?
编辑以澄清:
编辑:将项目上传到 github,以便人们可以看看
https://github.com/Pinwheeler/ChiroMatic.git
最佳答案
我花了很多时间浏览您的项目,但令人沮丧的是,我无法推断出导致问题的原因。但我发现我可以通过重新创建您的 PrintViewController
来解决问题。和 PrintContentViewController
场景(我不得不重新创建两者来解决问题)。我为您的项目创建了一个分支并修复了这两个场景。我尝试在源代码和 git 存储库提交注释中注释我的更改,因此希望您能遵循我所做的更改。我的 fork 可在:
(当您希望我删除该存储库时让我知道。我很乐意随时删除它,因为我假设您不希望我无限期地在 github 上留下副本。)
几点观察:
Document Inspector
选项卡,您会看到“使用自动布局”被选中。)如果您想使用它,那很好(它现在是 Xcode 中的默认设置),但要预先警告您失去向后兼容性如果您使用 iOS 6 之前的 iOS 版本。自动布局很强大,但是当您第一次开始使用它时可能会很棘手。这是你的电话。 PrintContentViewController
,我最重要的改变是使用标准 View Controller 场景配置(其中顶级 View 是 UIView
),我做了 UIScrollView
一个 subview 。话虽如此,我认为您不需要 UIView
UIScrollView
的 subview (如果你有中间的 UIView
,你会失去一些 ScrollView 功能,这是有问题的),所以我删除了它,并制作了 ScrollView 本身的所有标签和类似的 subview 。 当您想从其 subview Controller 中抽象出与容器 View Controller 关联的逻辑时,自定义容器非常有用。但你不是在这里这样做。更糟糕的是,您要通过各种方式来获取
IBOutlet
子 Controller 的引用并更新容器 Controller 中的属性。我衷心鼓励您重新考虑使用这些容器 View ,并将它们完全从您的项目中删除。如果您对容器 View 有迫切的需求,请使用它们(我喜欢它们并且一直使用它们),但我认为这里没有任何需要,而且您自己的生活变得更加复杂。
另外,顺便说一句,使用嵌入 segue 只是 iOS 6 的一项功能,如果您需要向后兼容 iOS 5,这可能是个问题。
最重要的是,在创建新项目和镜像 Storyboard时,我永远无法重现您的问题。我也无法通过对您的旧
PrintViewController
进行任何编辑来消除您的问题。和 PrintContainerViewController
场景。我只有在重新创建这些场景时才能修复它,而当我这样做时,它就起作用了。我把你的旧场景留在那里(以“旧”开头,这样 Storyboard就不会混淆),所以也许你可以花时间找出问题所在,但我看不到。也许 Storyboard中有一些错误正在逃避我。也许有一些我没有看到的设置。我所知道的是,当我刚刚重新创建它时,将您的控件复制到我的两个新场景中,它就可以正常工作。
就我个人而言,我建议打破僵局,完全消除容器 View 。你的代码会更干净,这类问题不太可能引起他们的丑陋。
这不是一个令人满意的结论(不知道是什么导致了问题),但至少它看起来是固定的。祝你好运。
关于ios - 嵌入式 UIScrollView 未加载其 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915190/