Проблема с загрузкой кончика заставки - PullRequest
0 голосов
/ 26 августа 2011

У меня есть приложение, которое загружает много данных.У меня загрузка данных в отдельном потоке, но пока он загружается, я бы хотел показать заставку.Для заставки я создал файл NIB, но не могу отобразить NIB.Я не совсем уверен, что я делаю неправильно.Если кто-то может помочь, я был бы очень признателен.Вот код:

Заголовочный файл:

@interface DigiWireCDAppDelegate : NSObject <UIApplicationDelegate> {
    --
    UIWindow *window;
    --
    UIView *loadingView;
    UIActivityIndicatorView *loadingAnimationIndicator;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
--
@property (nonatomic, retain) IBOutlet UIView *loadingView;
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *loadingAnimationIndicator;
--

Реализация:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [self loadData];

    [loadingAnimationIndicator startAnimating];
    loadingView.hidden = NO;

    [window addSubview:loadingView];
    [window bringSubviewToFront:loadingView];

    [self.window makeKeyAndVisible];

    return YES;
}

В случае, если это помогает, вот NIB:

loadView NIB

Ответы [ 3 ]

1 голос
/ 26 августа 2011

То, что IBOutlet настроен на что-то, не означает, что xib загрузится автоматически В вашем applicationDidFinishLaunching: вы хотите [[NSBundle mainBundle] loadNibNamed:@"loadingView" owner:self options:nil]; для фактической загрузки XIB в память.

0 голосов
/ 26 августа 2011

Ваш png на самом деле копируется в полученный пакет? Возможно, ваш просмотр изображений указывает на изображение где-то в вашей файловой системе, а не на пакет.

0 голосов
/ 26 августа 2011

Я не знаю, что находится в [self loadData], но я предполагаю, что он работает в основном потоке и поэтому блокирует обновление пользовательского интерфейса.Вам нужно дать циклу выполнения возможность запуска, чтобы индикатор активности начал анимацию.Либо запустите loadData в фоновом потоке, если это возможно, либо используйте executeSelector: withDelay: чтобы запустить его через короткий промежуток времени (например, 0,1), просто чтобы цикл выполнения имел шанс на отметку.

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