Objective c 我在Cocoa应用程序中添加了一个WebView,它';它产生了一个错误

Objective c 我在Cocoa应用程序中添加了一个WebView,它';它产生了一个错误,objective-c,xcode,macos,cocoa,Objective C,Xcode,Macos,Cocoa,我向我的应用程序添加了一个WebView,并使用以下代码将一个页面加载到其中: -(void)awakeFromNib{ NSString *resourcesPath = [[NSBundle mainBundle] resourcePath]; NSString *htmlPath = [resourcesPath stringByAppendingString:@"/calendarHTML/test.html"]; [[webView mainFrame] loa

我向我的应用程序添加了一个WebView,并使用以下代码将一个页面加载到其中:

-(void)awakeFromNib{
    NSString *resourcesPath = [[NSBundle mainBundle] resourcePath];
    NSString *htmlPath = [resourcesPath stringByAppendingString:@"/calendarHTML/test.html"];
    [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; 
}
但是,当我运行应用程序时,我收到以下错误:

调用-[WebHTMLView布局]后,布局仍需要更新。 WebHTMLView或其超类之一可能已覆盖 -布局而不调用super。或者,有些东西弄脏了 版面在中间进行更新。这两个都是计算机中的编程错误 可可自动布局。前者很可能在某些情况下出现 pre-Cocoa Autolayout类有一个名为layout的方法,但它应该是固定的。!


是什么导致了这个问题?

这是因为包含您放置WebView的窗口的nib正在使用Lion中引入的新功能

当nib文件启用自动布局时,窗口将对窗口中的所有
NSView
对象调用
-layout
方法

这会导致
WebView
出现问题,因为它之前有一个名为
-layout
的方法。该方法被添加到Lion中的
NSView
API中,而
WebView
layout
方法不理解自动布局

目前最好的解决办法可能是使用旧的自动调整大小蒙版方法在窗口中布局视图。由于Xcode现在创建启用自动布局的nib文件,您需要自己禁用它

通过禁用
Use Auto Layout
复选框,可以在nib文件的文件检查器中执行此操作


执行此操作后,您需要确保nib中的所有视图在视图检查器的“大小”选项卡中具有正确的自动调整大小设置。

请注意,您可以安全地忽略Web视图的日志消息。

我不确定
Web视图的情况,但如果您使用任何自定义类(如
UILabel
的子类)并且您正在使用以下方法:

- (void)updateConstraints
{

}
然后它肯定会使你的应用程序崩溃。最好的解决方案是删除此方法,并在“
awakeFromNib
”方法中写入所需的更改。希望这能帮助在自定义类中遇到此崩溃的其他人