Tes*_*esX 38 macos cocoa objective-c
在iPhone中我做UIViewController viewDidLoad并编写一些设置代码来设置视图.
但是我怎么能在NSViewController中做到这一点?
我已尝试使用loadView但它不起作用...也许我做错了什么我不知道...
PS:我刚刚开始使用OSX/iOS编程,很抱歉,如果我问一些愚蠢的东西:(
Chi*_*tel 49
我在发表评论的几分钟内就明白了.将我的发现添加为答案,因为它是文档中缺少的一个示例.下面的代码将为您提供所需的viewDidLoad方法.它很容易让我想知道为什么Apple还没有在OS X中实现它.
- (void)viewWillLoad {
if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) {
[super viewWillLoad];
}
...
}
- (void)viewDidLoad {
if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) {
[super viewDidLoad];
}
}
- (void)loadView {
BOOL ownImp = ![NSViewController instancesRespondToSelector:@selector(viewWillLoad)];
if(ownImp) {
[self viewWillLoad];
}
[super loadView];
if(ownImp) {
[self viewDidLoad];
}
}
Run Code Online (Sandbox Code Playgroud)
原始来源:http://www.cocoabuilder.com/archive/cocoa/195802-garbage-collection-leaks-and-drains.html
Mik*_*lah 41
从OS X 10.10开始,viewDidLoad可以使用并受支持NSViewController.
在此之前,你必须在Snow Leopards的发行说明中使用这个金块:
为在NSViewController中寻找-viewWillLoad和-viewDidLoad方法的人提供建议
尽管NSWindowController具有-windowWillLoad和-windowDidLoad方法,您可以覆盖Mac OS 10.5中引入的NSViewController类,但没有相应的-viewWillLoad和-viewDidLoad方法.您可以覆盖 - [NSViewController loadView]来自定义在视图控制器完成nib加载之前或之后立即执行的操作.
如OSX 10.10(约塞米蒂)的,现在有一个-viewDidLoad,-viewWillAppear,-viewDidAppear,-viewWillDisappear在NSViewController.有关详细信息,请参阅WWDC 2014 - OS X会话中的故事板和控制器,以了解何时调用它们等等.
这是10.10标题文档中的相关位 -viewDidLoad:
加载视图后调用.对于在代码中创建的视图控制器,这是在-loadView之后.对于从nib取消归档的视图控制器,这是在设置视图之后.默认不做任何事.
- (void)viewDidLoad NS_AVAILABLE_MAC(10_10);
Run Code Online (Sandbox Code Playgroud)
你为什么不试试这个:
- (void)awakeFromNib {
//setup code
NSLog(@"hello there");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21948 次 |
| 最近记录: |