gpt4 book ai didi

objective-c - 如何将 iPad View 分成更易于管理的 block ?

转载 作者:行者123 更新时间:2023-12-04 06:48:53 29 4
gpt4 key购买 nike

我知道我可能会因为没有正确阅读 HIG 或某些文档而受到指责,但是在观看了几个培训视频并在 iPhone 上构建了一些小项目之后,我现在正在尝试将东西放在 iPad 上而且,好吧,我的大脑很痛。

我理解 iPhone 上的想法,一个 View = 一个屏幕,一个 View = 一个 View Controller 。但是现在我正在处理一个可以同时显示多个内容的硬件,我真的不明白我应该如何使用它。

我将给出的示例是我正在进行的当前项目......我已经为不同的内容屏幕(启动画面、菜单、文章 View 等)组合了一堆不同的 View Controller 。但随后一些屏幕共享了内容。例如,菜单和文章屏幕都有一个菜单栏(如工具栏),从屏幕顶部向下滑动并提供导航。另外,我有一个导航元素,它应该从屏幕底部向上滑动以导航到不同的文章。这些是我在许多其他 iPad 应用程序中看到的东西(有线是一个例子)。

但是我不应该一次在屏幕上放置多个 View Controller ,是吗?不仅如此,如果我这样做了,那么自动旋转功能就会开始变得有点精神。但是,如果我将所有内容都放在一个 View Controller 中用于一个屏幕,我最终会得到 1,000 行代码,其中大部分需要复制粘贴到其他 View Controller 中。对我来说似乎是一个非常丑陋的解决方案。

所以我显然做错了什么......但我该怎么办?即使有人可以指出我应该阅读的信息的方向,我也会非常感激。

谢谢!

:-乔

最佳答案

您不会被禁止一次显示多个 View , View Controller 只是驻留在内存中的 View 管理器。

您可以创建自定义 View Controller 来管理您的 View Controller 。将其视为 UINavigationController 或 UISplitViewController。

你有一个 NSMutableArray 的 viewControllers

@property (nonatomic, retain) NSMutableArray *viewController;

/*
Do not use this code in production, its just for the example
*/
- (void)presentViewController:(UIViewController *)controller inRect:(CGRect)rect {

// check if viewcontroller is valid object
if (controller == nil) {
return;
}

// retain the controller
[self.viewController addObject:controller];

// position controllers view in the desired rect
// (in your implementation you might create a zones and use them instead)
controller.view.frame = rect;

// you might want to provide some animation capabilities here
[self.view addSubview:controller.view];
}

现在,您可以根据需要在屏幕上拥有任意数量的带有自己的 View Controller 的 View 。例如,您可能有嵌套的 View Controller :
ViewControllerManager->NavigationController->[ViewControllers];

附言一个完整的实现当然会更复杂,你需要调用 viewcontrollers viewWill/viewDid,管理 viewcontroller View 动画(呈现和关闭),lowMemoryWarning 上的内存管理(清除不可见或未使用的 View Controller )等等。

希望那些对你有帮助。 :)

关于objective-c - 如何将 iPad View 分成更易于管理的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408558/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com