关于View Controller的视图问题

2023-12-04

当我们访问视图控制器的视图属性时,它总是代表整个屏幕还是可以是部分屏幕?

间接地说,一个视图控制器可以有多个视图属性吗?


donkim 是对的,但不要相信我的话;)

请参阅 Rincewind 的这篇文章:https://devforums.apple.com/thread/81930以及其他 Apple 员工在其论坛上发表的任何数量的旧评论。

如果我明白你是什么 说,你创建了另一个视图 控制器(BlueViewController)和 将其视图添加为另一个视图的子视图 视图控制器?如果是这样,那么这就是 文档涵盖 – 特别是 说不要这样做,因为它不是 支持的。
视图控制器是 旨在管理整个屏幕 内容的价值。如果你想 进一步细分您的内容,然后 建议您使用对象 除了 a 的子类之外 UIViewController 来管理这些 子区域并管理这些对象 带有 UIViewController 子类。

此外我们还有UIViewController 类参考其中指出:

您使用 UIViewController 的每个实例来管理视图层次结构。典型的视图层次结构由根视图(此类的视图属性中提供的引用)和通常呈现实际内容的一个或多个子视图组成。在 iPhone 和 iPod touch 上,根视图通常会填充整个屏幕,但在 iPad 上,此视图可能仅填充部分屏幕。在这两种情况下,视图控制器负责管理整个视图层次结构,包括所有子视图。

还有查看 iOS 控制器编程指南:

根视图充当与视图控制器关联的所有其他视图的容器。您通常会为此视图定义框架以匹配应用程序窗口的大小,应用程序窗口本身应填满屏幕。但是,视图控制器还会根据需要调整框架大小,以适应各种视图的存在,例如系统状态栏、导航栏或选项卡栏。

不幸的是,这些都没有我想要的那么明确whyUIViewController 做出这些假设,以及何时可以安全地打破它们。据我所知,在不访问 UIKit 代码的情况下,UIKit 假设单个视图控制器将负责给定屏幕的内容。因此,在某些情况下,如果单个窗口中有多个可见的视图控制器,它会仅向一个(或可能仅某些)视图控制器发送 -viewWillAppear: 或 -didRecieveMemoryWarning 等消息。尽管我最近没有测试所有这些,但应该至少可以通过几种不同的方式来证明这一点,因此我将不再讨论其他用户报告的问题。 嵌套视图控制器不会收到 -didReceiveMemoryWarning 如果在呈现模态视图控制器并且随后关闭模态时发生旋转,则多视图控制器的视图将不会旋转。 有时期望视图控制器的视图填充窗口并且是不透明的,因此在它们未覆盖的窗口区域中绘制的内容可能是未定义的。尝试呈现一个不填满屏幕的模态视图控制器不会渲染底层视图,至少在 iOS 3.1.x 或我尝试的最后一个版本中是这样。


尝试直接回答 hmthur 的问题。 UIViewController 应该有一个根视图(它的“view”属性),它填充窗口并且可以调整大小以适应状态栏、选项卡栏等。该控制器可以具有该根视图的任意数量的子视图以及引用这些子视图的属性。


作为进一步的更新,请考虑此线程“创建容器 UIViewController 子类?” 在 Apple 开发者论坛上(讨论设置parentViewController为了构建自定义容器视图控制器)。

所有 UIKit ivars 都被视为私有,不支持直接访问,包括通过 setValue:forKey: 进行访问。设置这个 ivar 的方法也是私有的。

至于这个ivar [parentViewController],我会警告你它的行为可能会改变。

不幸的是,我没有任何好的替代建议,但就其价值而言,我们确实认识到创建容器视图控制器的困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于View Controller的视图问题 的相关文章

  • 使用线程安全单例初始化代码时代码执行停止

    为了利用全局变量和方法 我实现了 Singleton 作为一种健康的编码实践 我跟着苹果文档 http www johnwordsworth com 2010 04 iphone code snippet the singleton pat
  • 如何获取未知大小 NSArray 的前 X 个元素?

    在 ObjectiveC 中我有一个 NSArray 我们称之为NSArray largeArray 我想要一个新的NSArray smallArray仅包含前 x 个对象 或者如果largeArray 的大小已经 这种方法 NSArray
  • 正确地从 NSString 创建图像

    我正在从字符串变量创建图像 以下是创建图像的代码片段 UIImage imageFromText NSString text FontName UIFont font set the font type and size UIFont fo
  • 没有这样的模块“Ensembles”错误 - 导入 Objective-C 框架以在 swift 项目中使用

    我将 Ensembles 添加到我的 Swift 项目 在这里找到https github com drewmccormack ensembles https github com drewmccormack ensembles 我没能在我
  • 为什么 Obj-C 属性默认所有权“分配”而不是“强”

    我正在向旧项目添加 Swift 类 一切进展顺利 直到我尝试向 Swift 类添加属性 生成的标头无法编译 我认为问题是 在生成的代码中 Swift 省略了strong所有权并仅将其声明为nonatomic 这通常应该足够了 因为 prop
  • 导出 iPhone 地址簿数据库的可能方法

    我想将 Phone s Address Book sqlite db 导出到我的 iPhone 应用程序中 我在网上搜索过 但一切似乎都在 ABAddressBook 上迭代 但我想知道是否可以以编程方式将 Phone s Address
  • 使用 Objective-C 将 HTML 文本转换为纯文本

    我有巨大的NSString里面有 HTML 文本 该字符串的长度超过 3 500 000 个字符 我怎样才能将此 HTML 文本转换为NSString里面有纯文本 我正在使用扫描仪 但它运行速度太慢 任何想法 这取决于您的目标 iOS 版本
  • 将 NSDecimalNumber 转换为 NSString

    我正在从如下所示的对象中检索密钥 po obj TypeID 3 TypeName Asset 键值的检索方式如下 NSString typeId NSString obj objectForKey TypeID typeId 不是 NSS
  • UITextField 文本更改事件

    如何检测文本字段中的任何文本更改 委托方法shouldChangeCharactersInRange适用于某些东西 但它并不能完全满足我的需求 因为在它返回 YES 之前 textField 文本不可用于其他观察者方法 例如在我的代码中ca
  • iOS:调用 Objective-C 方法的处理开销是多少?

    我正在编写一些实时音频处理代码 该代码将在音频单元的渲染回调中执行 该线程处于系统识别的最高优先级 Apple 指示最大限度地减少此调用中进行的处理量 他们的建议之一是避免 Objective C 方法调用 But why 调用 Objec
  • 最小的 iOS 蓝牙管理器示例

    我一直在构建一个最小的示例 用于使用 iOS 5 0 中的 BluetoothManager 私有框架来检测附近的蓝牙设备 使用此问题中找到的答案 寻找触手可及的通用蓝牙设备 https stackoverflow com question
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • 导入 RNCryptor 后架构 armv7 的未定义符号

    我导入了 RNCryptor 可以在这里找到 https github com rnapier RNCryptor https github com rnapier RNCryptor进入我的应用程序 但是 我在日志中收到了三个错误 Und
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • 如何使用 Swift 使用 TouchID?

    Apple 为 iOS 8 的 TouchID 实现提供的文档采用 Objective C 语言 有 Swift 版本吗 Objective C IBAction touchIDAvailable UIButton touchIDAvail
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • 理解汇编语言的 mul 和 imul 指令的问题

    我正在学习80386保罗 考特的 PC 组装 mul source 如果操作数是字节大小 则将其乘以 AL 中的字节 注册和结果存储在 AX的16位 fine 如果源是 16 位 则将其乘以 AX 中的字和 32 位结果存储在 DX AX
  • IDispose 对象是否可以没有可用的 Dispose 方法

    我在用文件助手在一个项目和班级中MultiRecordEngine public sealed class MultiRecordEngine EventEngineBase IEnumerable IDisposable 这个类实现了ID
  • Node.js / Mongodb 插入回调返回未定义

    当我运行下面的简单代码来插入新文档时 collectionUsers insert name john function err records if err throw err console log Id of new document
  • 如何管理多个开发人员的合并更新? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我与一个中型开发团队合作 他们都致力于同一个产品 开发人员编写代码来解决功能或错误修复问题 然后将其签入我们的主要开发分支 在 Subversion 中 一旦 QA 人员对票证进
  • frida hook 原生非导出函数

    我出于学习目的逆向这个 Android 应用程序 该应用程序在本机层上实现了所有有趣的功能 因此我在 Arm Android Studio 映像上运行该应用程序并逆向共享库 因此该应用程序正在使用 ghidra 进行调用我设法将共享对象反编
  • 如何使此正则表达式替换适用于所有字符,而不仅仅是第一个字符?

    我正在尝试用连字符替换字符串中的所有空格 我试过这个 h3Text replace s 但它仅替换空格的第一个实例 而不替换其后的空格 使它替换的正则表达式是什么all空位 try h3Text replace s g the g标志是这里
  • 如何在Python matplotlib中的LaTeXed下标中包含字符串链[重复]

    这个问题在这里已经有答案了 我想使用 LaTeX 在 matplotlib 图的图例中编写一个带有下标的变量 解决此类问题的一种可能的代码可能是 import numpy as np import matplotlib pyplot as
  • 使用 JSON 每 x 秒更新传单标记位置

    我的地图上有一个标记 代表国际空间站的当前位置 从http open notify api herokuapp com iss now json callback 我还试图让它每 1 秒移动一次 以跟随空间站的轨道 这是我现在的代码 get
  • 在变量周围添加引号

    我需要从 SQL 导出数据并导入 SAS 地址字段的字符串中间有 我尝试使用 CSV 和制表符分隔 但每次 SAS 都会由于 而打破地址字段 我尝试使用另一个问题中的代码将逗号替换为空格 但它不起作用 update temp2 set ST
  • WinForm 应用程序 UI 在长时间运行的操作期间挂起

    我有一个 Windows 窗体应用程序 我需要使用一个 for 循环 其中有大量远程调用 大约 2000 3000 个调用 在执行 for 循环时 我失去了对表单和表单控件的控制 因为它变成了一个大进程 有时它显示 未响应 但如果我等待很长
  • C语言中如何使用void指针?

    以下是我无法理解如何完成的几个函数声明 我扫描了网络以了解 void 指针是什么 并且我知道它必须转换为有用的东西 因为它只指向某个内存块 但我不知道这如何帮助完成这些声明 type of comparison function that
  • Java SAXParser 解析无效的 xml [重复]

    这个问题在这里已经有答案了 我正在尝试解析一些无效的 xml 因为属性没有用引号引起来 有什么方法可以解决这个问题吗 下面是一个简单的例子 以及java代码 XML
  • 将所有标准输入读取到 Java 字节数组中

    现代Java 仅使用标准库 最简单的阅读方式是什么all of标准输入直到 EOF 转换为字节数组 最好不必自己提供该数组 标准输入数据是二进制数据 不是来自文件 IE 像鲁比的东西 foo stdin read 我能想到的唯一的部分解决方
  • 是否可以自动选择正确的客户端证书?

    我已经使用 SSL 客户端证书配置了 Apache httpd 网站 以便只有在 Web 浏览器中安装了正确证书的用户才能访问该网站 如果仅安装了一个客户端证书 Web 浏览器将自动选择它 这不是默认设置 但可以在设置对话框中的某处进行配置
  • Invoke-WebRequest,带参数的 POST

    我正在尝试 POST 到 uri 并发送参数username me Invoke WebRequest Uri http example com foobar Method POST 如何使用 POST 方法传递参数 将参数放入哈希表中并像
  • 使用C#获取SMTP服务器证书

    如何使用 C 连接到支持 STARTTLS 的 SMTP 服务器并获取其 SSL 证书 我知道可以使用 openssl 来完成类似的事情 openssl s client starttls smtp crlf connect 192 168
  • 在 Java 中检查结果集的有效方法

    我正在运行一个 select 命令 该命令返回 1 000 000 行 迭代 ResultSet 下面的代码需要 5 分钟才能执行 有没有更快的方法来迭代 ResultSet conn getDbConnection Statement c
  • 为什么 JavaScript 设置超时不起作用? [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我正在尝试使用 setTimeout 但它不起作用 任何帮助表示赞赏 有人知道怎么修这个东西吗 var button document getElementById reactionTes
  • 我可以使用

    在文章之后 我有与文章相关的标签列表 将这些标签的列表包装在语义上是否正确
  • 关于View Controller的视图问题

    当我们访问视图控制器的视图属性时 它总是代表整个屏幕还是可以是部分屏幕 间接地说 一个视图控制器可以有多个视图属性吗 donkim 是对的 但不要相信我的话 请参阅 Rincewind 的这篇文章 https devforums apple