为什么必须在AppDelegate中更改窗口?

时间:2014-09-17 03:55:28

标签: ios objective-c

我需要在Xcode 5中更改窗口 - 而不是视图 - 背景。

这在AppDelegate中运行良好,但我想知道为什么它必须在那里:

// Insert code here to initialize your application
// Background color
[_window setOpaque:NO]; // YES by default
NSColor *semiTransparentBlue =
[NSColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:0.5];
[_window setBackgroundColor:semiTransparentBlue];

如果我把它移到另一个班级,把它放进

- (id)initWithFrame:(NSRect)frame, or
- (void)drawRect:(NSRect)dirtyRect,

与     #import“AppDelegate.h” 在class.h中, 它正确编译但无法更改窗口,即使断点显示正在访问它。

为什么必须在AppDelegate中?所有窗口更改都必须在AppDelegate中吗?是否有参考说明?

我无法通过广泛的Google搜索找到任何指导。 Apple文档显示了代码行,用于显示要执行的操作,但不显示放置它们的位置。

1 个答案:

答案 0 :(得分:1)

没有看到启动你的"其他类的代码"这可能是UIView的一个子类,它是一种预感但是......

_window可能设置不正确。您可以通过调用

来获取对主窗口的引用

[[UIApplication sharedApplication] delegate] .window

尝试设置颜色和不透明。