-viewDidLoad 未在子类 UIViewController 中调用

2023-11-23

请耐心等待,我还在学习 Cocoa Touch。其他 -viewDidLoad 未被调用问题与我的问题无关,我进行了搜索。

I have FooViewController, a UIViewController子类。 FooViewController.xib 将其文件所有者设置为 FooViewController。另外,我有Main,其应用程序委托是MyApplication文件的所有者是UIApplication。我的主笔尖设置为“Main”。

我可以使用以下流程使视图出现在屏幕上(为简洁起见,剪掉了代码):

UIWindow *main;

-(void)applicationDidFinishLaunching:(UIApplication*)application {
    [self showFooViewController];
    [main makeKeyAndVisible];
}

-(void)showFooViewController {
    fooViewController = [[FooViewController alloc] init];
    if(![[NSBundle mainBundle] loadNibNamed:@"FooViewController" owner:fooViewController options:nil]) {
        DebugF(@"Failed to load FooViewController");
        return;
    }

    // Add the view and put it in place
    UIView *view = [fooViewController view];
    CGRect cur = [view frame];
    cur.origin = CGPointMake(0.0f, 20.0f);
    [view setFrame:cur];

    [main addSubview:[fooViewController view]];
}

但是,此消息不会发送至FooViewController:

- (void) viewDidLoad {
    DebugF(@"Hello!");
}

gdb 的输出完全沉默。

我看过其他 Cocoa 教程,它们在 IB 的文档视图中显示实例等,但我在我的教程中没有看到这些选项。我应该在 Nib 中实例化 fooViewController 吗?我错过了连接吗?在 FooViewController.xib 中,文件的所有者视图连接到 Nib 中的视图。

我确信这是一个简单的解决方案,但我走错了路。哈普!


我还没有找到支持以下内容的文档,但这是我通过实验/经验推断出的:

The viewDidLoad预计该方法将在之后立即调用loadView被调用,这取决于调用者loadView提供额外的调用viewDidLoad.

在某些情况下,SDK 会为您处理此行为。假设你有一个子类UIViewController called MyViewController; then:

  • 如果您访问myViewController.view在你打电话之前loadView,那么超类访问器足够聪明,可以调用loadView为你,以及viewDidLoad此后立即。

结果,如果您的代码如下所示:

MyViewController *myViewController = [[MyViewController alloc] init];
[superView addSubview:myViewController.view];  // Calls viewDidLoad.

然后两个loadView and viewDidLoad将代表您致电。

但是,如果您的代码如下所示:

MyViewController *myViewController = [[MyViewController alloc] init];
[myViewController loadView];
[superView addSubview:myViewController.view];  // Doesn't call viewDidLoad.

那么viewgetter 可以看到您已经加载了视图,并且它假设您还调用了viewDidLoad同样 - 所以它也不会调用。讽刺的是,这里额外的函数调用阻止了viewDidLoad从被打电话。

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

-viewDidLoad 未在子类 UIViewController 中调用 的相关文章

  • 如何建立辅助NSSortDescriptor排序键?

    我已成功按排序键对数据进行排序lastName 但我想知道如何排序lastName 然后由firstName 这是我用来排序的代码lastName NSSortDescriptor sortDescriptor NSSortDescript
  • NSDictionary 上的 NSPredicate

    我试图根据字母表在表格视图中创建部分 并在这些部分下按字母顺序对我的条目进行排序 我已经收集了 bandArrayIndex 中 bandArray 每个条目的第一个字母 现在我尝试使用 NSPredicate 来计算每个字母有多少个 我正
  • iPhone 中的 NSNotification

    我正在将 NSSNotifcation 发送到 iPhone 应用程序中的另一个视图控制器 但它的观察者方法收到两次通知 这可能如何 任何人都可以指导我 我已经使用此代码来发布通知 NSNotificationCenter defaultC
  • 在 uilabel 中查找文本的位置 {x,y}

    我有一个来自服务器的字符串 我正在 UILabel multiligne 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历过这个 但我
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • 如何知道用户何时更改设置包

    我让用户在 iPhone 的设置区域中更改他们的设置 在下一次网络同步期间 我想将用户更改发送到服务器 但前提是做出改变 但是我如何知道用户何时在设置区域中进行了更改 如果可以的话 我想避免选择总是发送信息 无论是否更改 或者首先从服务器获
  • NSString – 静态还是内联?有性能提升吗?

    如果我写的话会有任何性能提升吗 NSString helloStringWithName NSString name static NSString formatString Hello return NSString stringWith
  • XCode 无法将 iPhone 应用程序部署到 iPhone 3GS

    因此 我构建了我的 iPhone 应用程序 它在模拟器中运行良好 因此我想将其部署到我的 iPhone 上进行最后一轮测试 然后再使用我的分发配置文件进行公开 Beta 测试 我已经这样做过很多次了 从来没有出现过问题 然而 自从上次测试运
  • 如何在 Core Data 中存储图像?

    只是猜测 我创建一个属性并将其类型设置为 二进制 但最终我该如何使用它呢 我猜幕后有一个 NSData 那么该属性实际上采用 NSData 吗 这个问题已经被问过很多次了 答案有点复杂 当涉及二进制数据时 您应该根据要使用的数据的预期大小来
  • 如何将 NSDecimal 值转换为 NSInteger 值?

    我遇到一种情况 我得到一个 NSDecimal 并且我需要一个 NSInteger 我确实知道这是一个非常小的值 这是绝对肯定的 它不会大于 100 所以将它转换为 NSInteger 就完全没问题 不会发生溢出 这怎么可能做到呢 NSDe
  • 如何知道我的应用程序使用了多少 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
  • 如何获取CATransition/Animation的结束事件?

    我的代码如下所示 CATransition transition CATransition animation transition duration duration 我希望得到CATransition Animation的结束事件 是否
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • Objective-C – 拥有包含 TestFlight SDK 的 TestFlight 配置

    我已按照 TestFlight 的说明复制 发布 配置 我还使用 TestFlight SDK 从我的应用程序获取实时报告 通过这样做 我必须在我的应用程序中包含一些 TestFlight 代码 当然 我不想在我的应用程序的发布版本中包含此
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • 在发生更改事件时将货币格式重新应用到 UITextField

    我正在使用一个包含本地化货币值的 UITextField 我看过很多关于如何使用此功能的帖子 但我的问题是 如何在每次按键后将货币格式重新应用到 UITextField 我知道我可以通过以下方式设置和使用货币格式化程序 NSNumberFo

随机推荐

  • 将 postgres 更改为不区分大小写

    如何将 Postgresql 数据库更新为不区分大小写 我已经有一些表和一些数据 目前它们区分大小写 但我想将它们全部更新为不区分大小写 你无法得到你的database不区分大小写 但从 v12 开始 您可以创建不区分大小写的 ICU 排序
  • 在 iPhone 中显示带有文本框的警报视图

    是否可以像 AppStore 应用程序一样显示带有文本框的警报视图 它在这样的对话框中要求输入密码 我至少见过一些其他第三方应用程序在使用它 它是私有 API 吗 这是来自 Tharindu Madushana 的 Apple 批准 的操作
  • 从文件加载 RSA 私钥时出现 InvalidKeySpecException

    我正在尝试从 java 中的文件加载私钥 该密钥由 ssh agent 生成 我实际上正在使用下面的代码 public PrivateKey getPrivateKeyFromFile try String privateKey readF
  • 角度拦截器和 CORS

    我正在尝试编写一个拦截器 以使用 Angular 向所有 HTTP 请求添加令牌 我大致使用这里给出的食谱 https thinkster io interceptors 所以代码使用 http 模块工厂和tokenInterceptor
  • 使用 UNION 时,SQL 查询是否保证以原子方式执行?

    我正在发出一个由使用 UNION 分组的多个 SELECT 组成的单个 SQL 查询 SELECT FROM employee LEFT JOIN department ON employee DepartmentID department
  • 是否可以在 Visual Studio 调试会话之间保留 Cookie

    我有一个身份验证 cookie 当我在本地环境中点击登录屏幕后 该 cookie 就会被设置 该 cookie 已被设置为持久性的 并被赋予未来 7 天的超时期限 当我结束调试会话并在另一个构建后开始调试时 cookie 不存在 每个浏览器
  • jquery 获取加载时 iframe 内容的高度

    我有一个帮助页面 help php 我正在 main php 的 iframe 中加载该页面 在 iframe 中加载此页面后 如何获取该页面的高度 我问这个是因为我无法将 iframe 的高度设置为 100 或自动 这就是为什么我认为我需
  • C++ 中的除法[重复]

    这个问题在这里已经有答案了 我是 C 新手 我尝试了这个简单的代码 include
  • 如何将数组作为参数传递给 vararg 函数?

    我有一些代码看起来像这样 uint8 t activities 8 uint8 t numActivities 0 activities numActivities someValue activities numActivities so
  • 将 Dropbox 集成到 Android 应用程序中,但没有登录弹出窗口

    我想在我的应用程序中使用保管箱 我开发了一个用于上传和下载文件的示例应用程序 它要求身份验证 但我不想打开登录弹出窗口 其他用户是否可以使用默认帐户 单个帐户 登录详细信息访问保管箱 因此任何用户都可以直接使用 dropbox 而无需弹出登
  • 可以在 Visual Studio 中使用 WSDL 自动生成代码

    您好 我想使用测试以下功能 http msrmaps com terraservice2 asmx op ConvertLonLatPtToNearestPlace 是否有一些更快的方法可以使用 Visual Studio 2010 对其进
  • 部分匹配行名时发出警告

    我刚刚发现了数据框中行名称部分匹配导致的错误 有没有办法禁用部分匹配 运算符或在使用全局匹配时生成警告 我知道这是可能的exact TRUE为了 运算符或与options warnPartialMatchDollar TRUE for 索引
  • 派生类的指针可以类型转换为其基类的指针吗?

    new 返回的派生类的指针可以进行 类型转换为其基类的指针 这是对还是错 我知道dynamic cast可以用来消除缺点 一般来说 如何将派生类的指针转换为其基类的指针 是的 从指向派生类的指针到指向基类的指针的转换是隐式的 因此 以下内容
  • JUnit - 如何测试具有不同值的方法?

    我有一个方法并希望用不同的值来测试它 我的问题是 如何编写 JUnit 测试来测试具有不同值的相同方法 您可以查看参数化测试 例如example 你也可以使用理论这在很多情况下更方便
  • Android 中使用 Kotlin 的 HTTP 请求

    我想使用 POST 方法进行登录验证并使用 GET 方法获取一些信息 我已经有了我之前项目的 URL 服务器用户名和密码 对于安卓系统 Volley是一个很好的起点 对于所有平台 您可能还想查看ktor客户或http4k这都是很好的图书馆
  • React Admin 显示非常混乱

    我的 RA 项目在本地部署时渲染良好 但是 当我将构建目录复制到 S3 存储桶进行部署时 它渲染得一团糟 有时它会起作用 但大多数时候它会呈现如下图所示 它在使用 AOR 的两种环境中都可以正常工作 环境 React admin版本 2 0
  • 使用 JavaScript 更改浏览器中的 URL,而不加载新页面

    我怎样才能有一个JavaScript可能会对当前页面产生一些影响 但也会更改浏览器中的 URL 的操作 因此如果用户点击重新加载或添加书签 则会使用新的 URL 如果后退按钮能够重新加载原始 URL 那就太好了 我正在尝试在 URL 中记录
  • Pylint 忽略特定名称[重复]

    这个问题在这里已经有答案了 我有 pylint 问题 即有时它会对某些变量 类 模块等重复相同的消息 但我找不到解决方法 我想说的是 pylint 不要使用某些选项或 rcfile 指令检查 此模块 模块 ZZZ 中的 消息 XXX 任何消
  • 有关如何将 SwipeRefreshLayout 与 ListView 结合使用的简单示例

    有人有关于如何将 SwipeRefreshLayout 与 ListView 一起使用的简单示例吗 这是我的情况 我有一个类 SynchDogs 从服务器提取数据 所以该类作为我的适配器的源 我想使用 SwipeRefreshLayout
  • -viewDidLoad 未在子类 UIViewController 中调用

    请耐心等待 我还在学习 Cocoa Touch 其他 viewDidLoad 未被调用问题与我的问题无关 我进行了搜索 I have FooViewController a UIViewController子类 FooViewControl