заставка не будет отображаться - PullRequest
0 голосов
/ 26 октября 2010

РЕДАКТИРОВАТЬ 1: изменил код на:

delegate.h:

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    ViewController *viewController;
    UIImageView *splashView;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ViewController *viewController;
@property (nonatomic, retain) IBOutlet UIImageView *splashView;

- (void)removeSplash;

@end

delegate.m:

#import "AppDelegate.h"
#import "ViewController.h"

@implementation AppDelegate

@synthesize window;
@synthesize viewController;
@synthesize splashView;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    splashView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Splash" ofType:@"png"]];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [window makeKeyAndVisible];

    [self performSelector:@selector(removeSplash) withObject:nil afterDelay:5.0];

    [window addSubview:viewController.view];

    return YES;
}

- (void)removeSplash {
    [splashView removeFromSuperview];
    [splashView release];
}

- (void)dealloc {
    [viewController release];
    [window release];
    [super dealloc];
}

@end

РЕДАКТИРОВАТЬ 2:

когда я использую:

splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
splashView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Splash" ofType:@"png"]];
if (splashView.image == nil) {
    NSLog(@"splashView is nil");
}

регистрируется "splashView is nil"

Мой Viewcontroller пуст, только для целей отладки.

1 Ответ

2 голосов
/ 26 октября 2010

Как вы, наверное, уже знаете, заставки не приветствуются. Поскольку ваше изображение - Default.png, не показывается ли оно при запуске приложения автоматически?

В любом случае вызов sleep (), вероятно, блокирует пользовательский интерфейс. Удалите sleep () и переместите операторы после него (removeFromSuperview и т. Д.) В другой метод в делегате приложения. Вызовите этот метод, используя performSelector:withObject:afterDelay:. Переведите вызов executeSelector туда, где вы в данный момент находитесь в режиме ожидания.

Кроме того, вы должны использовать метод didFinishLaunchingWithOptions вместо старого метода applicationDidFinishLaunching.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...