- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不能使用 initWithNibName:bundle,因为我现在使用的是最新的 XCode (5)。经过一些研究,我找到了一个替代方案:initWithCoder。
例子:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self){
// code here
}
return self;
}
我想了解的是,这是如何替代 initWithNibName 的?
目前正在学习一本为 ios6 和之前版本的 xode 编写的 ios 大 Nerd 牧场书,并尝试使用 coreLocation 框架。
在下面的代码中,我替换了 initWithNibName。我也在较早的教程中使用相同的初始化程序完成了此操作并且它有效但如果我不完全理解一章,我很难继续阅读教程书籍。苹果文档并不总是立即有意义。通常结合使用 stackoverflow 答案和重新阅读有助于理解。
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self){
//create location manager object
locationManager = [[CLLocationManager alloc] init];
//there will be a warning from this line of code
[locationManager setDelegate:self];
//and we want it to be as accurate as possible
//regardless of how much time/power it takes
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
//tell our manager to start looking for it location immediately
[locationManager startUpdatingLocation];
}
return self;
}
上面的代码是做什么的?它看起来像一个指定的初始值设定项,但参数的名称和返回类型让我感到困惑。在此感谢您的帮助。
亲切的问候
更新:
根据我在 XCode 5 中收集到的信息,鼓励使用 Storyboard ,我看不到不使用 Storyboard 的选项。我从本书中学习的教程使用的是 XCode 4.3,其中提供了 nib。
最佳答案
为了从 nib(或 Storyboard )的 View Controller 中了解此方法的作用,您必须了解 NSCoding。
当使用 NSCoding 取消归档对象时,它拥有的所有对象都会产生级联效应。 initWithCoder: 被发送到一个对象,它被解冻,然后被发送到它拥有的对象等等。
这是 nib 加载系统用来解冻您在界面构建器中创建的所有对象的方法。
这里简要介绍了 nib 加载系统的功能(来自文档)
在此处查看对象加载过程部分下的更多详细信息。 https://developer.apple.com/library/ios/documentation/cocoa/conceptual/LoadingResources/CocoaNibs/CocoaNibs.html
重点是当使用 nib 或 Storyboard时,将从您的 viewController 调用 initWithCoder,因为这是系统解冻您的对象图以及您在界面构建器中为这些对象设置的属性的方式。
另请记住, Storyboard只是 nib 文件的集合,其中包含一些描述它们如何相关的元数据。
关于objective-c - 我说的对吗 initWithNibName :bundle is used to manually load nib files and that initWithCoder would be used as an alternative?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257725/
我正在尝试在手写笔中使用 Nib CSS3 扩展。安装了手写笔和 Nib (尝试了本地和全局 -g)。但没有一个工作,当我做 stylus styles.styl > build/styles.css
我们当前的best-practice for custom views是: 在 Nib 中构建自定义 View 。 在 View Controller 中,以编程方式加载 Nib,从加载的对象数组中获
我是界面构建器的新手,我想要一个包含 UIView 的 3x3 网格的屏幕,每个网格都包含一个 UIImageView 和 4 个 UILabels。 我的逻辑可能有缺陷,但我试图实现这一目标的方式是
我有一个用 Swift 编写的框架/模块,它提供了一些具有 IBDesignable 功能的自定义控件。 目前我正在开发一个基于 CollectionView 的控件。 CollectionView
我有两个 nib 文件 - Main.nib 和 Preference.nib在 Main.nib 文件中,我有一个 NSView 类的实例。它的窗口有一个NSPopUpButton,单击它会显示一个
我想创建一个节标题来加载一个 nib 文件并将其设置为标题 UIView。这个 nib 文件还将有一个关联的类,其中连接了 outlets 和 action,所以我想像平常一样用 nib 加载那个类。
我正在尝试使用来自 this pre-built page menu pod from github 在说明中,它说: var controller : UIViewController =
我是 Cocoa 新手,无法将我的 nib 文件拆分为多个 nib 文件。 我的MainMenu.nib包含一个Tracker Controller对象,它是NSObject的子类。它在我的主菜单中有
我通过 XIB 创建了 CustomViewController。 我还通过作为 UIView 子类的不同 XIB 文件创建了 CustomView。 然后我将 UIView 绑定(bind)到 Cu
我正在使用自定义 UITableViewCell。当我尝试运行我的代码时,我得到了这个异常堆栈,我无法理解问题的根源: terminating app due to uncaught exceptio
我有两个 Nib ParentViewController.xib ChildViewController.xib ParentViewController.xib 包含一个 UIView 和一个 U
我一开始使用了一些 NSWindows 项目,但我的 GUI 正在不断发展,这些元素将更适合作为 NSViews。有没有办法将 NSWindow NIB 转换为 NSView NIB? 最佳答案 不存
我想要具有正确顺序的 View Controller 生命周期功能的完整列表。请任何天才。 请指定ViewController生命周期函数. 请指定序列号,例如用法:,并且仅使用简短描述。示例: 与使
我有两个 Nib :Parent.xib 和 Child.xib。 我已将子 Nib 包含在父 Nib 内以简化绑定(bind)。我在 loadView 中以编程方式设置 subview 。问题是,a
我正在开发一款通用应用程序,iPhone 版本运行良好。我为 iPad 创建了一个新的 nib,并将文件所有者设置为 viewcontroller 类。我连接了所有的 IBOutlets 和 IBAc
我有两个 UIViews,我将它们称为 A 和 B。 A 是B 的容器,每一个都是使用Interface Builder 创建的。 我需要使用界面生成器将我的 B View 添加到 A 中,如下图所示
谁能解释什么时候对同一个 NIB 文件使用多个 View 比使用多个 NIB 文件更好? 一个 NIB 文件可以包含多个 View ,因此有时使用一种方法比使用另一种方法更好。 我是不是太含糊了? 最
简单的任务:我有一个带有 2 个 NIB 文件的应用程序(每个 NIB 文件都有自己的 Controller )。我已经成功地显示了第二个 NIB 文件的窗口,就像我想要的那样,但现在,我想单击 NI
目前,我有一个托管上下文、许多相互关联的实体 NSArrayController,以及几个 Windows,每个 Windows 都使用 1 或 2 个 NSArrayController。 Wind
尝试创建一个 tableView 单元格 xib,但遇到错误“加载了 nib 但未设置 View 导出” 我读过很多帖子,大多数人都说将“ View ”从文件所有者拖到 IB View 。 但是,如果
我是一名优秀的程序员,十分优秀!