首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >presentViewController in viewDidLoad

presentViewController in viewDidLoad
EN

Stack Overflow用户
提问于 2015-10-25 16:45:32
回答 1查看 3.1K关注 0票数 8

我试图使用以下代码来使用来自presentViewController的viewDidLoad代码:

代码语言:javascript
复制
@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

当我从一个IBAction按钮调用它时,它工作得很好,但是通过编程我得到了这个错误:

代码语言:javascript
复制
 *** 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.

不知道怎么走,谁能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 16:52:19

你这么做太早了。viewDidLoad意味着视图控制器有一个视图(这就是"load“这个词的意思),但是该视图不是接口的一部分。因此,没有什么可以呈现的。

viewDidAppear:再说。这意味着视图控制器的视图位于接口中(这就是“出现”一词的意思)。

但是,请注意,viewDidAppear:可以被多次调用,当呈现的视图控制器被解除时会被调用,这会给您一个恶性循环。使用某种类型的Bool标志(属性)来防止这种情况。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33332249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档