- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试子类化 NSOutlineView。这是我的代码:
OutlineViewSublcas.h:
#import <Cocoa/Cocoa.h>
@interface OutlineViewSubclass : NSOutlineView {
}
@end
OutlineViewSubclass.m:
#import "OutlineViewSubclass.h"
@implementation OutlineViewSubclass
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
printf("debug A\n");
return self;
}
- (void)awakeFromNib
{
printf("debug B\n");
}
@end
调试输出是:
debug B
为什么(id)initWithFrame:(NSRect)frame
没有被调用?
最佳答案
Cocoa 控件实现 NSCoding 协议(protocol)以从 Nib 取消归档。 initWithCoder: 方法不是使用 initWithFrame: 初始化对象,然后设置属性,而是在使用 Interface Builder 配置的序列化属性加载控件时负责设置控件。这与使用 NSCoding 序列化任何对象的方式几乎相同。
如果您将自定义 NSView 子类粘贴在未实现 NSCoding 的 Nib 中,情况会有点不同,在这种情况下 initWithFrame: 将被调用。在这两种情况下,awakeFromNib 都会在对象加载后被调用,并且通常是在子类中执行额外初始化的好地方。
关于cocoa - initWithFrame 未调用,但 awakeFromNib 已调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/433539/
我试图了解 View Controller 的生命周期,但我读到了一些关于 awakeFromNib 的相互矛盾的陈述。文档说所有 socket 都应该在 awakeFromNib 中设置,但是 I
这让我发疯。 我的印象是 awakeFromNib 方法仅被调用一次(即使再次访问该 View ),如果我错了,请纠正我。 我有一个具有 3 个 View 的应用程序。最后一个是 UIview 的子类
是否有 awakeFromNib 的逆向方法,即 Nib 关闭时调用的方法?我知道应用程序委托(delegate)收到应用程序将终止的通知,但想知道是否需要在简单的 NSObject 上保存一些状态信
在我的 RootViewController 中,我有 IBOutlets。我可以通过 viewWillAppear 访问它们,但在 awakeFromNib() 中它们都是 nil 我正在调用sup
希望我不会因为这个而受到指责...... 有人可以解释这是如何将 managedObjectContext 传递给 rootViewController 的吗? 以下是为 iOS 核心数据应用程序自动
我有一个表格 View ,其中注册了两个自定义 Nib 单元。单元及其相应的连接类彼此完全独立。 基于条件的表格 View 应显示注册的两个单元格之一: 表格 View 代码: func tableV
您好,我有一个关于布局的问题。 我使用 Storyboard来设置布局。 而且我已经通过 Storyboard设置了一个 UI 组件。 为了支持iPhone5或iPhone 6 Plus..我正在编写
我一直在学习 coredata,方法是基于选中“使用 coredata”的 xcode 导航 Controller 模板制作许多简单的测试应用程序。 App 委托(delegate)中的 awakeF
awakeFromNib 是否在分配和初始化 viewController 后立即被调用? View Controller 的 awakeFromNib 在什么精确点被调用?从我的调试 session
我开始将更多的 View 层次结构迁移到 IB。 我有一个名为“AlignmentViewController.xib”的 nib 文件,在其中我使用 AlignmentViewController
我尝试从 awakeFromNib 调用 performClick: 但它不起作用。我认为这是因为它需要一个发送者,而 awakeFromNib 没有发送者。我尝试过使用 nil、self 和 sen
TableData 是 NSObject 的子类,作为基于 View 的表的数据源和表委托(delegate)。 TableData 的 awakeFromNib 方法将运行多次,因为我使用的是基于
我想了解为什么如果我尝试在 init 方法中为对象(如 NSButton)设置值(即 setAlphaValue 或 setTitle),则不会发生任何事情,但如果我在 awakeFromNib 中调
我看到了这段代码: CoolButton *coolButton = [[CoolButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 2
我使用 UIBezierPath 和 CAShapeLayer 以及以下代码创建了圆形进度 View 。 let center = self.center let trackLayer = CASha
我有以下代码: - (void) awakeFromNib { CGRect temp = self.buttonOne.frame; temp.origin.y += 50;
从 Xcode 8 更新中,它刚刚注意到,对于 UITableViewCell 的 awakeFromNib 方法,内部没有内容(在使用 xib 文件添加自定义单元格类时自动创建),给出我以下警告。
在 UIView 类别的 -awakeFromNib 方法中编写代码是否安全。 UIView+XXXXXX.m @implementation UIView (XXXXXX) - (void) awa
我有一个 Storyboard应用程序。当第一个 View 在启动时加载时,我有这段代码来实例化我的主后台线程,并且一切正常。 public override void AwakeFromNi
我的项目中有两个自定义 View 需要以完全相同的比例缩放。所以我决定为此使用 UIScrollView,它非常适合。 我决定开发一个非常简单的继承自 UIScrollView 的类,并在其中初始化所
我是一名优秀的程序员,十分优秀!