我已经在这个问题解释同一个问题:
我在哪里可以改变我的应用程序从一个UIWindow使用窗口到我自己的子类“mywindow的”故事板带?
我的问题是如何实现在我的应用程序委托一个“窗口” getter方法返回“mywindow的”子类? 或者,也许还有其他的方法来我的子类分配给我的应用程序的主窗口?
我已经在这个问题解释同一个问题:
我在哪里可以改变我的应用程序从一个UIWindow使用窗口到我自己的子类“mywindow的”故事板带?
我的问题是如何实现在我的应用程序委托一个“窗口” getter方法返回“mywindow的”子类? 或者,也许还有其他的方法来我的子类分配给我的应用程序的主窗口?
UIWindow
在故事板项目可在苹果公司的解释被继承UIApplicationDelegate
参考:
窗口
当使用一个故事板时,应用程序必须通过将其添加到窗口,并把该窗口在屏幕上呈现所述故事板中。 应用程序查询该属性窗口。 此属性的保留参照窗是必要的,以保持窗口被释放。 如果属性的值是nil
(默认值),应用程序创建的泛型实例UIWindow
并将其分配给该属性为代表参考。 你可以实现本协议的吸气剂的方法,以提供具有不同的窗口的应用程序。
在你的。换句话说AppDelegate
实现简单的添加下面的getter
Objective-C的
- (MyCustomWindow *)window
{
static MyCustomWindow *customWindow = nil;
if (!customWindow) customWindow = [[MyCustomWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
return customWindow;
}
迅速
var customWindow: MyCustomWindow?
var window: UIWindow? {
get {
customWindow = customWindow ?? MyCustomWindow(frame: UIScreen.mainScreen().bounds)
return customWindow
}
set { }
}
在我自己的应用程序,我已经看到了“ window
创建从Xcode的模板创建一个新的应用程序时,”财产申报AppDelegate.h。
您可以修改属性从“改变UIWindow
”到“ MyWindow
在这一点上”。
或者,不太优雅的解决方案,你可以简单地施展window
的回归到一个‘ MyWindow
访问时,’对象类型。
它不是那么难你要第一子类的UIWindow
class WinCustom : UIWindow{
....
}
然后在AppDelegate中:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = WinCustom(frame: UIScreen.main.bounds)
self.window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
return true
}