簡體   English   中英

如何為自定義UIWindow實現我自己的getter方法?

[英]How can I implement my own getter method for a custom UIWindow?

我正在嘗試實現自己的自定義UIWindow類。 它名為SNWindow。 我讀到您必須實現自己的getter方法,這就是我所做的,但從未超越“ Point 1”。 它無限記錄“ Point 1”,在iPhone上顯示黑屏。

AppDelegate.h

#import <UIKit/UIKit.h>
#import "SNWindow.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) SNWindow *window;
- (SNWindow *)window;
@end

AppDelegate.m

...

- (SNWindow *)window
{
    NSLog(@"Point 1");

    //
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    //
    UIViewController *viewController = [storyboard instantiateInitialViewController];

    //
    _window = [[SNWindow alloc] init];
    _window.rootViewController = viewController;

    NSLog(@"Point 2");

    return _window;
}

關於如何解決它的任何想法?

不要將window屬性鍵入為SNWindow; 正常方式將其鍵入為UIWindow。 然后,在您的App Delegate類中,您的代碼應如下所示:

- (UIWindow*) window {
    UIWindow* w = self->_window;
    if (!w) {
        w = [[SNWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self->_window = w;
    }
    return w;
}

App委托的其余部分,例如application:didFinishLaunching... ,應該繼續進行並正常進行(可能只返回YES)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM