Objective c 将按钮添加到视图yosemite时出错&引用;NSWindow警告:添加未知子视图:";

Objective c 将按钮添加到视图yosemite时出错&引用;NSWindow警告:添加未知子视图:";,objective-c,xcode,osx-yosemite,Objective C,Xcode,Osx Yosemite,我的代码部分是: NSWindow *appWindow = [NSApp appWindow]; NSView *superview = [[appWindow standardWindowButton:NSWindowCloseButton] superview]; NSRect frame; frame.size = NSMakeSize([self.mBuyFullVersionView frame].size.width,[self.mBuyFullVe

我的代码部分是:

 NSWindow *appWindow = [NSApp appWindow];

    NSView *superview = [[appWindow standardWindowButton:NSWindowCloseButton] superview];

    NSRect frame;

    frame.size = NSMakeSize([self.mBuyFullVersionView frame].size.width,[self.mBuyFullVersionView frame].size.height);

    frame.origin.y =[superview frame].size.height - [self.mBuyFullVersionView frame].size.height -kVerticalSpacing;

    frame.origin.x =[superview frame].size.width - [self.mBuyFullVersionView frame].size.width - kHorizontalSpacing - 6;

    [self.mBuyFullVersionView setFrame:frame];

    [superview addSubview: self.mBuyFullVersionView];

“NSWindow警告:添加未知子视图:…”正如它所说,是NSWindow发出的警告。当子视图直接添加到windows背景视图(称为borderView,而不是其contentView)时,会出现此警告。 此警告是无害的,但不建议在backgroundView中添加视图,因为这可能会在将来中断

如果要将视图添加到标题栏,可以使用工具栏或NSTitlebarAccessoryViewController。对于其他所有内容,请使用窗口的contentView

来自苹果API发行说明:

NSWindow从未支持客户端将子视图添加到contentView以外的任何对象。某些应用程序会将子视图添加到contentView.superview(也称为窗口的边框视图)。NSWindow现在将在检测到此情况时记录:“NSWindow警告:添加未知子视图:“。执行此操作的应用程序需要修复此问题,因为它会阻止10.10上的新功能正常工作。请参阅标题BarAccessoryViewController以获取官方API。”

NSWindow现在可以将官方已知的子视图添加到标题栏/工具栏区域。这些视图将使用名为NSTitlebarAccessoryViewController的新NSViewController子类包装,并使用“标题栏AccessoryViewController”添加到窗口中API。有一组方法可以添加和插入标题栏AccessoryViewController,例如addTitlebarAccessoryViewController:和removeTitlebarAccessoryViewControllerAtIndex:。但是,也可以使用“removeFromParentViewController”轻松删除给定的子视图控制器。NStitleBaracessoryViewController有一个属性告诉NSWindow将视图放置在何处(layoutAttribute),还有一个属性确定它在全屏(fullScreenMinHeight)中的行为。NSToolbar fullScreenAccessoryView API现在已不推荐使用,客户端应使用此新API


您是否在任何地方实例化了mBuyFullVersionView?执行此代码时mBuyFullVersionView是否为空?mBuyFullVersionView是一个出口。在google中搜索后,我知道我们必须使用NStitleBaccessoryViewController。但我不知道如何使用。您能否提供一个代码片段,以便我能清楚地理解它?Pl放松。试着看看这个:还有