高效使用 Interface Builder

2024-04-18

我是 iPhone 和 Objective c 的新手。我花了很多时间阅读文档并试图理解事情是如何运作的。我有 RTFM,或者至少正在这个过程中。

我的主要问题是我想了解如何指定事件传递到的位置,而我能够做到这一点的唯一方法是指定委托,但我确信 IB 中有一种更简单/更快的方法。

那么,举个例子。 假设我有 20 个不同的视图和视图控制器以及一个 MyAppDelegate。 我希望能够在 IB 中构建所有这些不同的 Xib 文件,并添加任意数量的按钮和文本字段等,然后指定它们都在 MyAppDelegate 对象中生成一些事件。为此,我在 IB 列表视图的每个视图控制器中添加了一个 MyAppDelegate 对象。然后,我在 XCode 中的 MyAppDelegate 中创建了一个 IBAction 方法,然后返回 IB,并将所有事件链接到每个 Xib 文件中的 MyAppDelegate 对象。

然而,当我尝试运行它时,它只是因错误读取异常而崩溃。

我的猜测是,每个 Xib 文件都放置一个 MyAppDelegate 对象指针,该指针与运行时实际创建的最终 MyAppDelegate 地址无关。

所以我的问题是...我该怎么做?


如果您在每个 nib 文件中创建 MyAppDelegate 的实例,那么,是的,当所有 nib 加载时,您最终会得到该类的许多不同实例。应用程序委托不是通过类甚至协议来标识的,而是通过应用程序实例的指向的对象来标识的。delegate财产。要找到真正的应用程序委托,您必须向应用程序对象本身询问其委托

您应该让所有视图控制器都继承自具有以下属性的父视图控制器类:appDelegate财产。实现这样的事情:

#import "MyAppDelegateClass.h"

@interface ViewControllerBaseClass :UIViewController {
    MyAppDelegateClass *appDelegate;
}
@property(nonatomic, retain)  *appDelegate;

@end

@implementation ViewControllerBaseClass
@synthesize appDelegate;

-(MyAppDelegateClass *) appDelegate{
    self.appDelegate=(MyAppDelegateClass *)[[UIApplication sharedInstance] delegate];
    return appDelegate;
}
@end

当视图控制器需要应用程序委托时,它只会调用self.appDelegate。如果您想访问应用程序委托的属性,请使用self.appDelegate.attributeName.

重要的是您在运行时向应用程序询问其特定的委托实例。你不能从 nib 文件中做到这一点。

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

高效使用 Interface Builder 的相关文章

  • Apple 应用程序加载器 - 如何更改正在使用的 Apple ID?

    我想切换 Apple App Loader 使用的 Apple ID 我找不到更改应用程序本身使用的帐户的方法 谷歌搜索没有带来任何有用的信息 当我启动加载程序应用程序时 它给我一个错误 您的 Apple ID 或密码输入不正确 20101
  • Xcode 4.4 和 4.5 在项目关闭时冻结

    自从升级到 Xcode 4 4 并再次升级到 4 5 在 Lion 上运行 后 每次我关闭应用程序项目或退出时 Xcode 都会冻结大约 3 5 分钟 在此期间 活动监视器显示 CPU 占用率为 95 但几乎没有发生磁盘活动 我尝试过卸载并
  • 开发iPhone游戏需要什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Xcode 9 - Alamofire Pod。命令 /bin/sh 失败,退出代码为 1

    Users Alex Library Developer Xcode DerivedData MyProject ehabmnclpzlywhabrefntacibonm Build Intermediates noindex Archiv
  • UINavigationBar 未在横向“返回”时更新

    我正在开发 UINavigationController 驱动的 iPad 应用程序 在模拟器中测试 导航控制器堆栈上只有两个 UIViewController 为了演示 我们将它们称为 SetupController 和 ContentC
  • 在ios中通过社交框架登录Facebook

    我是 iOS 开发新手 我必须将 Facebook 登录集成到我的 iOS 应用程序中 当用户登录时 它会获取所有信息并将其导航到主屏幕 我已经通过 Facebook 最新的 SDK 完成了此操作 但我希望通过社交框架完成此操作 我浏览了很
  • XCode 4.2 编译器错误

    当我使用 XCode 4 2 创建新项目 例如 单视图 iOS 应用程序 时 支持文件 文件夹中的 main m 文件如下所示 import
  • 如何使用 Codable 解析此 JSON?

    我一直在尝试从我的中解析这个对象JSON并不断收到此错误 错误 类型不匹配 Swift Array Swift DecodingError Context codingPath debugDescription 本应解码数组 但找到了字典
  • 为什么Android和IOS11无法通过NFC通信

    目前正在使用 React Native 并尝试使用反应本机 NFC ios https www npmjs com package react native nfc ios and 反应本机 NFC https github com Nov
  • 完成后未删除时如何重用 CABasicAnimation?

    很多人都在谈论在使用 CABasicAnimation 对象后保留它 所以通过设置 完成时删除 否 当动画完成时 动画对象保持附加到图层 在不创建新的 CABasicAnimation 的情况下 如何重新启动该动画 保留这个物体有什么意义呢
  • Swift 2.0 中的协议扩展方法调度

    我面临有关协议方法调度的问题 我有一个类层次结构 如下所示 protocol E func test extension E func test print jello class A E class B A func test print
  • @IBDesignable 错误:IB Designables:无法更新自动布局状态:Interface Builder Cocoa Touch Tool 崩溃

    我有一个非常简单的 UITextView 子类 它添加了 占位符 功能 您可以在文本字段对象中找到该功能 这是我的子类代码 import UIKit import Foundation IBDesignable class Placehol
  • Xcode 10 命令行构建:存档失败,出现 Fabric Info.plist 错误

    我有用于自动构建 iOS 项目的 Jenkins 服务器 该项目有两个目标 使用命令行实用程序构建项目xcodebuild 完整命令是 usr bin xcodebuild workspace Our project xcworkspace
  • 使用 Javascript 获取 Mobile Safari 中选定的文本

    因此 我正在开发一个小书签 对于我来说 使用 循环 获取用户选择的内容是理想的选择 window getSelection 和 document getSelection 都是我可以调用的函数 但是它们始终返回空字符串 我相信问题在于 当您
  • iPhone 6 隐藏在键盘下方的自动校正

    自动修正UITextview在 Iphone5s 中工作正常 但在 iPhone 6 中它被隐藏在键盘后面 在 iPhone 5s 中按预期工作 但不适用于 iphone 6 有什么办法可以解决 iPhone 6 上的这个问题吗 不 去物业
  • 从 NSString 获取子字符串,直到到达特定单词

    假设我有这个NSString Country Address Tel number 我该如何获取之前的子字符串Tel 国家地址 然后我该如何获取后面的子字符串Tel 数字 使用 NSScanner NSString string Count
  • UITableView 如何一次显示两个不同的数组?

    下面的代码有效 但不符合我的意愿 我希望当我单击 UIbutton 时 它会自动更新 UITableview 中的新值而不是旧值 下面的代码仅在我按下 UIbuttons 时有效 之后当我滚动 UITableview 时它会更新具有新值的
  • 一个 UITableView 中的两种不同的单元格类型

    大家好 我对如何在一个具有两个部分的 UITableView 中使用两种不同的单元格类型感到非常困惑 第一部分应返回一个大单元格 其中包含大量文本 另一部分应返回三个单元格 以导航到其他视图 我尝试过这样的 UITableViewCell
  • 如何让 xcodebuild 将编译错误和警告打印到 stderr?

    似乎 xcodebuild 将所有内容打印到标准输出 Applications Xcode app Contents Developer usr bin xcodebuild project test xcodeproj build tar
  • Coredata错误setObjectForKey:对象不能为nil

    我正在尝试检查我的核心数据存储中是否有任何数据作为我的应用程序的恢复类型 基本上 如果用户处于最终视图 则 coredata 中会有一些数据不断更新 因此 他们处于最终视图中 然后应用程序崩溃 或者他们将其置于睡眠状态 然后应用程序从内存中

随机推荐

  • 锁定一个物体

    我经常看到这样的代码此处显示 http msdn microsoft com en us library ak9w5846 aspx 即分配一个对象 然后将其用作 锁定对象 在我看来 您可以使用任何对象来实现此目的 包括事件本身作为锁定对象
  • 如何将变音符号更改为非变音符号[重复]

    这个问题在这里已经有答案了 我在 stackoverflow 上找到了如何删除变音符号的答案 但是您能否告诉我是否可以将变音符号更改为非变音符号 哦 我想到了 NET 或者其他 如果不可能的话 由于没有人费心发布代码来执行此操作 因此它是
  • Room IllegalArgumentException:int 无法转换为元素

    我在尝试编译项目时遇到此错误 错误 任务 app compileDebugJavaWithJavac 执行失败 java lang IllegalArgumentException int无法转换为元素 还有这个警告 警告 注释处理器 an
  • MariaDb 10 条件(其中 id = '1')返回与 id ='1a' 相同的结果

    我创建以 id 作为主键和 int 自动增量的表 用这个脚本 CREATE TABLE devel pos menu id INT NOT NULL AUTO INCREMENT title VARCHAR 100 NULL DEFAULT
  • 向后迭代字符串字符的好方法是什么?

    向后迭代字符串中的字符的最 Swiftian 方法是什么 即喜欢for ch in str 仅相反 我想我一定错过了一些明显的东西 因为我现在能想到的最好的办法是 for var index str endIndex index str s
  • Python docx在保持样式的同时替换段落中的字符串

    我需要帮助替换 Word 文档中的字符串 同时保留整个文档的格式 我正在使用 python docx 在阅读文档后 它适用于整个段落 因此我松散了格式 例如粗体或斜体的单词 包括要替换的文本以粗体显示 我想保持这种状态 我正在使用这段代码
  • 使用 Apache POI 检测所需的打印方向

    我正在使用 Apache POI 创建 xls 电子表格 有没有办法检测数据是否适合纵向模式或者是否必须将工作表设置为横向模式 我知道如何设置模式 但不知道如何确定数据是否适合当前的打印方向 HSSFPrintSetup printSetu
  • 追加到 txt 文件中的现有行

    我有一个程序可以将一个人的姓名及其分数存储在 python 的 txt 文件中 例如这是我当前的代码 name input Name score input Score file name student scores txt file o
  • 开始在现有代码库中进行自动化集成/单元测试

    背景 我们已经移交了一个非常大的代码库 140 万行 主要是 C 语言 该应用程序主要由 asp net 2 0 样式的 asmx Web 服务组成 用于访问 SQL Server 2008 数据库以及各种 XML 文件中的数据 没有现有的
  • .NET 4 上的 ASP.NET 导致 IE11 throw _doPostBack is undefined javascript 错误

    编辑 该站点位于 Windows Server 2003 上 因此无法升级到 NET Framework 4 5 我们的网站正在为 NET 4 上的 ASP NET 提供服务 使用 IE 11 时 自动回发停止工作 并出现错误 doPost
  • 仅在运行 Android 12 的 Pixel 设备上出现 CannotDeliverBroadcastException

    我发现 Crashlytics 发生了崩溃 但我无法重现或找到其原因 该崩溃仅发生在运行 Android 12 的 Google Pixel 设备上 并且崩溃始终发生在后台 这是来自 Crashlytics 的崩溃日志 Fatal Exce
  • 用于属性说明的 HTML5 标签

    引用 HTML5 最终规范 http www w3 org TR html5 forms html attr label for http www w3 org TR html5 forms html attr label for The
  • 如何在 OS X 上像屏幕截图选择一样绘制矩形?

    矩形如何重绘 这是在 NSWindow 上吗 还是NSScreen 我怎样才能在 OS X 原生的 API 上做到这一点 谢谢 None
  • 分发Windows C++库:如何决定是创建静态库还是动态库?

    我们一直在将 Java 和 NET API 库转换为 C 并试图找出将编译版本分发给其他开发人员以与他们的自定义应用程序一起使用的最佳方法 应该是静态库还是动态库 我们需要为 Win32 和 Win64 创建 我想每个目标操作系统都有调试版
  • 实体框架:在运行时添加属性/实体

    我想使用实体框架 但是 我还要求允许我的用户在我们的系统中定义自定义字段 我想仍然使用实体框架 而不是使用具有哈希表属性的分部类 下面是我想到的解决方案 但是它并不简单 所以我想看看是否有更好的方法 我目前的想法是拥有一个 ModelMan
  • 如何调整 Plotly 条形高度并仅显示条形边缘(在子图中)?

    这是我第一次涉足 Plotly 与 matplotlib 和 bokeh 相比 我喜欢它的易用性 然而 我陷入了一些关于如何美化我的情节的基本问题 首先 这是下面的代码 其功能齐全 只需复制并粘贴即可 import plotly expre
  • IOs7 应用程序在后台崩溃

    我的应用程序有时会在后台崩溃并显示以下崩溃日志 Nov 7 12 33 31 iPad backboardd 29
  • XCTest 应用程序测试和权限警报

    我正在编写 XCTest 应用程序测试来测试一些UIViewControllers通过致电presentViewController on the UIApplication rootViewController 除了权限对话框之外 这工作
  • 使用 libgit2sharp 获取提交与其父级之间的更改

    我正在使用 libgit2sharp libgit2 的 C 包装器 并且遇到了问题 因为它没有很多我希望的功能 希望我能尽快为它做出贡献 这似乎是一个非常有用的项目 我现在想做的事情是获取从特定提交及其父级更改的文件列表 我不会试图弄清楚
  • 高效使用 Interface Builder

    我是 iPhone 和 Objective c 的新手 我花了很多时间阅读文档并试图理解事情是如何运作的 我有 RTFM 或者至少正在这个过程中 我的主要问题是我想了解如何指定事件传递到的位置 而我能够做到这一点的唯一方法是指定委托 但我确