我正在尝试使用此代码从viewDidLoad使用presentViewController:
@implementation ViewController
- (void)showLogin{
id animator = [[MyCustomAnimator alloc] init];
NSViewController* vc = [[MyViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:vc animator:animator];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Presenting ViewController";
[self showLogin];
}
@end
Run Code Online (Sandbox Code Playgroud)
当我从IBAction按钮调用它时,它工作正常,但是以编程方式进行操作却收到此错误:
*** Assertion failure in -[ViewController presentViewController:animator:], /Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1404.12/Controllers/NSViewController.m:826
Failed to set (contentViewController) user defined inspected property on (NSWindow): presentViewController:animator:: View '<ViewController: 0x6000000c28b0>''s view is not in a window/view hierarchy.
Run Code Online (Sandbox Code Playgroud)
不知道如何进行,有人可以指出正确的方向吗?
您这样做太早了。viewDidLoad表示视图控制器具有一个视图(这就是单词“ load”的含义),但是该视图不是接口的一部分。因此,没有任何东西可提供。
等到viewDidAppear:。这意味着,视图控制器的观点是在接口(这是什么字“出现” 的手段)。
但是要当心,它viewDidAppear:可以多次调用,并且在取消显示的视图控制器时将调用它,从而使您陷入恶性循环。使用某种Bool标志(一种属性)可以防止这种情况。
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |