2011-08-26 107 views
0

我有一個加載大量數據的應用程序。我有一個單獨的線程加載數據,但它加載時,我想顯示一個啓動畫面。對於初始屏幕,我創建了一個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

+0

這是在MainWindow.xib中的初始屏幕? – MishieMoo

+0

不,這是一個單獨的NIB,名爲loadingView.xib – unclesol

回答

1

只是因爲你有一些設置爲IBOutlet並不意味着xib會自動加載。在你的applicationDidFinishLaunching:你想要[[NSBundle mainBundle] loadNibNamed:@"loadingView" owner:self options:nil];爲了實際加載到內存xib。

+0

非常感謝 - 這個伎倆。我一直在尋找幾個小時,但我猜我的google-foo今天不適合我。 – unclesol

0

我不t知道[self loadData]中有什麼,但我猜測它在main中做了它的工作線程,因此它阻止了UI的更新。您需要讓運行循環有機會運行,以便讓活動指示器開始動畫。或者在後臺線程上運行loadData(如果可能的話),或者使用performSelector:withDelay:在短時間後(如0.1)運行它,以便運行循環有機會打勾。

+0

感謝您的迴應。實際上,loadData創建一個新的線程並在其上運行數據加載例程。在我的測試中,我實際上已經[self loadData]註釋掉了,以確保它不會造成任何問題。由於某些原因,NIB仍然無法加載。 – unclesol

0

你的png實際上是被複制的int結果包嗎?也許你的圖像視圖指向你的文件系統而不是包的某個圖像。