自动加载 UITableViewController 的 XIB

2024-03-10

遇到一些有趣的事情,想知道我是否做错了什么或者这是否是正确的行为。

我有一个自定义的 UITableViewController。我假设(第一个错误)如果你这样初始化:

[[CustomTableController alloc] init];

它会自动从同名的 XIB CustomTableController.xib 加载(如果它位于同一目录等)。

HOWEVER

这是行不通的;不加载 XIB。但是,如果我将控制器的父类从“UITableViewController”更改为“UIViewController”,则一切正常!

Calling:

[[CustomTableController alloc] init];

从我的 xib 加载控制器和视图。

难道我做错了什么?这是一个错误吗?预期的行为?


Cocoa Touch 中的大多数类都列出了一个“指定的初始化程序”,您应该从您的应用程序中调用它。init当你子类化它们时的方法。当您创建自己的自定义类时,最好检查文档以查找超类的指定初始值设定项。当您使用更通用的超类中的其他初始化程序初始化该类时(您通过调用 -[NSObject init]在这种情况下),您剥夺了直接超类正确初始化其状态的机会。有时你可以摆脱这个。通常你不能。

UIViewController 的文档指出其指定的初始值设定项是 -initWithNibName:bundle:。如果您使用 nil nibName 调用此方法,它将查找与您的类名匹配的 nib。的行为-init没有记录为UIViewController。根据您所看到的行为,它似乎可能正在调用[self initWithNibName:nil bundle:nil],但打电话会更安全initWithNibName:bundle:直接而不是依赖于这种未记录的行为。

UITableViewController 只定义了一个初始化器,-initWithStyle:(尽管它没有指定此方法作为指定的初始值设定项)。此方法在不使用笔尖的情况下初始化 UITableViewController,这通常没问题。由于您不向 UITableView 添加子视图,因此通过 nib 配置 UITableViewController 通常不会获得太多好处。

如果你决定无论如何都要通过笔尖配置你的 UITableViewController,文档告诉我们我们可以安全地绕过-initWithStyle:并调用 UIViewControllerinitWithNibName:bundle:方法。以下是文档告诉我们的 UITableView 及其控制器在每种情况下如何初始化的内容:

  • 如果通过指定 nib 文件initWithNibName:bundle:方法(由超类 UIViewController 声明),UITableViewController 加载 nib 文件中存档的表视图。否则,它会创建一个具有正确尺寸和自动调整大小掩码的未配置的 UITableView 对象。您可以通过 tableView 属性访问此视图。

  • 如果加载包含表视图的 nib 文件,则数据源和委托将成为 nib 文件中定义的对象(如果有)。如果未指定 nib 文件或 nib 文件未定义数据源或委托,则 UITableViewController 将表视图的数据源和委托设置为 self。

总之,大多数 Cocoa Touch 类的文档要么指定一个指定的初始值设定项,要么指定几个可以从子类安全调用的初始值设定项。请始终参考超类的文档来确定子类应该调用哪个初始化程序。

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

自动加载 UITableViewController 的 XIB 的相关文章

  • ReactNative - 未处理的 JS 异常:SyntaxError

    当我尝试在 iOS 8 上启动 RUN 应用程序时 出现这个奇怪的错误 Unhandled JS Exception SyntaxError仅此而已 不再有更多信息 有any1偶然发现这个问题吗 在 iOs 9 上应用程序运行正常 x代码版
  • 重新启动应用程序时出现异常 SIGKILL

    我在 iPhone 模拟器中构建并运行一个项目 我通过按主页按钮将其发送到后台 然后我双击主页按钮在后台找到我的应用程序并点击它 它变得活跃并且应用程序继续运行 在这里 无论我重复多少次 我都没有问题 然后我通过点击应用程序图标上的红色小减
  • UiTextField 和 resignFirstResponder

    我有一个奇怪的设置 我有一个View called View1 and a ViewController call 视图控制器1 in IB View1是 的孩子视图控制器1 Inside View1 我使用代码创建UITextField并
  • iPhone JPG 图像有非标准魔术字节 ff d8 ff e1?

    我的网络应用程序在接受上传的图像之前会根据文件扩展名检查前四个字节 一位同事向我展示了他 iPhone 上的图像 但这些图像被拒绝了 它们具有不同的第四个字节 e1 225 而不是预期的 e0 224 这对于 iPhone 来说是常见的吗
  • iOS UITableViewCell cell.imageView 设置圆角

    嘿我正在尝试设置cell imageView s cornerRadius 但似乎不起作用 cell imageView layer cornerRadius 9 它会起作用还是我应该添加自定义UIImageView在我的牢房里有圆角吗 我
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 将自己的结构传递到 opengl es 2.0 着色器中

    我想尝试 OpenGL ES 2 0 编程指南 一书中的照明示例 在着色器中他们制作了两种结构 struct directional light vec3 direction normalized light direction in ey
  • React Native glog iOS:未知类型名称“_START_GOOGLE_NAMESPACE_”

    我已经构建了一个 React Native 的 Android 项目 它运行良好 然后我开始了 iOS 部分 我正在使用react native cli 2 0 1react native 0 60 4和Xcode 10和Mac OS Mo
  • 如何防止Apple Watch进入睡眠状态?

    我们正在开发一个 Apple Watch 项目 但如果不被打扰 手表就会进入睡眠状态 有什么办法可以阻止它进入睡眠状态吗 据我所知和有关该主题的其他搜索 目前还没有api可通过编程方式启用或禁用 Apple Watch 的睡眠模式
  • iPhone UINavigationBar 使用 [UINavigationBar 外观] 更改所有控制器的字体样式

    我知道我可以单独更改导航栏的字体 如本答案所述 更改导航栏的字体 https stackoverflow com questions 5832036 change the navigation bars font 目前我正在使用一种更全局的
  • 使用 Interface Builder 创建 UIScrollView 的步骤

    我正在尝试使用 UIScrollView 但似乎有一些基本的事情我不理解 假设我想在我的 iPhone 应用程序中使用 UIScrollView 我有一个充满按钮的视图 尺寸为 320x700 显然 这对于 320x480 的 iPhone
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 填充 CoreData 创建的 sqlite 数据库

    我有一个由 CoreData 模型自动创建的 sqlite DB 但我的应用程序不会让用户能够将数据写入其中 而是我想用程序所需的所有数据预先填充它 我的问题是 CoreData 创建的 sqlite DB 具有未知的表和字段 这些表和字段
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • 在 UISearchController 文本字段中输入内容时导航栏消失

    我试图找出为什么当我开始在 UISearchController searchBar 中输入时我的整个导航栏消失 它正确加载并正确动画 但是当我开始输入时我丢失了活动的导航栏 下面是从 viewDidLoad 加载 searchContro
  • WhatsApp 显示警告“此项目无法共享。请选择其他项目。”对于 iOS 应用程序。

    我正在开发一个 iOS 应用程序 在该应用程序中 我有社交共享功能 并且社交共享功能使用深度链接来共享 URL 该网址共享对于所有应用程序都运行良好 除了WhatsApp 它会显示一个警报弹出窗口 此项目无法共享 请选择其他项目 以下是我的
  • 拖动时获取MKAnnotation的坐标

    我正在根据用户添加的注释的位置创建一条路径 MKPolyline 我想允许用户通过拖动引脚来更改路径 我目前可以做到这一点 但 MKPolyline 不会更新 直到引脚被放下 我实施了 void mapView MKMapView mapV

随机推荐

  • 如何强制 Gradle 重新下载依赖项?

    如何告诉 Gradle 从存储库重新下载依赖项 通常 您可以使用命令行选项刷新缓存中的依赖项 刷新依赖项 https docs gradle org current userguide dependency management html
  • JAGS 中缺少预测数据模型

    我正在尝试在 JAGS 中编写最简单的缺失数据模型 一个预测变量 有一些缺失的数据点 和一个结果变量 我知道这个例子不是最有用或最现实的 但它可以帮助我在继续处理更复杂的缺失预测数据场景之前解决模型问题 模型和数据如下 但这是编译错误 Er
  • 动态 UILabel 大小 iOS 7 问题

    我正在尝试根据文本高度动态调整标签大小 UILabel 中的高度可以从 0 行到多行不等 我已经为这个问题提出了一个解决方案 该解决方案在 iOS 8 上运行良好 但在 iOS 7 1 上失败 我也试图支持它 该项目中未使用自动布局 所有约
  • 有限字符池中不存在重复字符的正则表达式

    有没有办法编写正则表达式来匹配仅包含某些字符的字符串 并且从不重复这些字符 我已经使用一组代码编写了一些代码来实现此目的 但想知道是否有正则表达式的方法可以做到这一点 例如 如果我只想要一个包含 A B C 的字符串 并且我想匹配一个从不重
  • 如何弃用 Protocol Buffers 中的整个消息?

    根据文档 https developers google com protocol buffers docs proto 已弃用 字段选项 如果设置为 true 则表示该字段已弃用 并且不应由新代码使用 使用示例 message Foo s
  • sqlalchemy 中 sql LIKE 的反向版本[重复]

    这个问题在这里已经有答案了 我所说的 类似的反向版本 是指完全一样这个问题 https stackoverflow com questions 472063 mysql what is a reverse version of like 问
  • django haystack 自定义表单

    我正在尝试使用 django haystack 制作自定义搜索表单 我只是从 haystack 的文档中进行修改 forms py from django import forms from haystack forms import Se
  • geom_smooth() - 缩放 y 轴,因平滑而丢失数据

    抱歉 这个例子不是那么好 但它确实强调了这一点 mtcars tran lt factor mtcars am labels c Man Aut ggplot mtcars aes x hp y mpg group tran geom sm
  • 静态 const 成员初始化中的 sizeof

    我有这样的代码 class A public unsigned long a static const unsigned long b sizeof a error C2327 A a is not a type name static o
  • Ruby on Rails Collection select - 如何预先选择正确的值?

    我花了过去三天的时间为我的 列表 表单收集 选择表单助手 用户可以在其中选择一个类别 我希望将当前在listing category id 中设置的类别作为预选值 我的视图代码如下所示 我知道这是不正确的 但即使阅读 Shiningthro
  • iOS 6.0:UISplitViewController Popover 损坏或 Apple 更改了设计?

    我在 Xcode 4 5 和部署目标 5 1 中创建了一个带有主详细信息模板的项目 有人可以帮我解决以下 UISplitViewController 问题吗 在纵向模式下 主视图从左侧淡入 它不像 iOS 5 0 中的纵向模式那样显示为 P
  • Linux命令检查文件系统中的新文件

    我们有一台 Linux 机器 我们想检查在某个日期范围内添加了哪些新文件 我只能通过 SSH 访问此机器 它是 openSUSE 11 1 是否有某种命令可以为我提供在 04 05 2011 和 05 05 2011 之间添加到文件系统的文
  • Python - ValueError:未知区域设置:UTF-8 [重复]

    这个问题在这里已经有答案了 我运行包含 Pandas 导致问题的那个 库的 python 脚本 我收到此错误 Traceback most recent call last File test py line 2 in
  • 如何将新列添加到数据框(到前端而不是末尾)?

    如何向现有数据框添加新变量 但我想添加到前端而不是末尾 例如 我的数据框是 b c d 1 2 3 1 2 3 1 2 3 我想添加一个新变量 a 所以数据框看起来像 a b c d 0 1 2 3 0 1 2 3 0 1 2 3 Use
  • GWT Maven 插件每次都会重新编译

    我在我的 GWT 项目中使用 GWT Maven 插件 问题是 如果任何类发生更改 即使它是服务器类 GWT Maven 插件也会在运行时重新编译所有 GWT 代码mvn package 这个插件如何判断是否需要重新编译 我怎样才能让它变得
  • 从命令行覆盖 pom pluginManagement 中定义的 Maven 插件配置

    我的项目继承的POM包含一些
  • 需要递归生成文件数组的每个唯一组合

    我研究并发现LOTS类似的请求 但没有什么是我所需要的 这是我的问题 我正在使用 C 工作 并且有一个 FileInfo 数组 其中包含未知数量的元素 FileInfo files new FileInfo new FileInfo C a
  • Java 中的嵌套循环是如何工作的? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我是 Java 编程新手 正在尝试学习编码的基础知识 我想知道这段代码是如何工作的 for int i 1 i lt 5 i for int
  • 实体框架和 Transactionscope 在处置 Transactionscope 后不会恢复隔离级别

    我在事务范围和实体框架方面遇到了一些困难 最初 我们希望应用程序中的所有连接在读取数据时都使用快照隔离级别 但在某些情况下 我们希望使用读已提交或读未提交隔离级别来读取数据 为此 我们将使用事务范围来临时更改隔离级别用于查询 正如此处的几篇
  • 自动加载 UITableViewController 的 XIB

    遇到一些有趣的事情 想知道我是否做错了什么或者这是否是正确的行为 我有一个自定义的 UITableViewController 我假设 第一个错误 如果你这样初始化 CustomTableController alloc init 它会自动