2011-06-19 76 views
1

編輯:工作,請參閱下面的代碼。UINavigationController在運行編譯時不顯示

在一個應用程序上工作,現在我有AppDelegate類和一個自定義UINavigationController類。我現在的代碼非常簡單,我覺得我已經正確設置了XIB。構建成功,沒有錯誤。但是當應用程序啓動時,導航控制器不會顯示。我沒有看到導航欄和表格視圖。我看到的只是一個空白的屏幕。這裏是我的大部分代碼:

// 
// FTPPhotosAppDelegate.h 
// FTPPhotos 
// 
// Created by Aaron McLeod on 11-05-30. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

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

@interface FTPPhotosAppDelegate : NSObject <UIApplicationDelegate> { 
    UINavigationController *navigationController; 
    RootViewController *rootViewController; 
} 

@property (nonatomic, retain) UINavigationController *navigationController; 
@property (nonatomic, retain) IBOutlet UIWindow *window; 

@property (nonatomic, retain) RootViewController *rootViewController; 

@end 


// 
// FTPPhotosAppDelegate.m 
// FTPPhotos 
// 
// Created by Aaron McLeod on 11-05-30. 
// Copyright 2011 __MyCompanyName__. All rights reserved. 
// 

#import "FTPPhotosAppDelegate.h" 

@implementation FTPPhotosAppDelegate 


@synthesize window=_window; 

    @synthesize navigationController, rootViewController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    navigationController = [[UINavigationController alloc] init]; 

    rootViewController = [[RootViewController alloc] init]; 
    [self.navigationController pushViewController:rootViewController animated:NO]; 
    [self.window addSubview:[self.navigationController view]];  
    [self.window makeKeyAndVisible]; 
    return YES; 
} 


@interface RootViewController : UITableViewController<UIImagePickerControllerDelegate> { 
    NSMutableArray *photos; 
    UIImagePickerController *picker; 
    UIBarButtonItem *addPhotoButton; 
} 

@property (nonatomic, retain) NSMutableArray *photos; 
@property (nonatomic, retain) UIImagePickerController *picker; 
@property (nonatomic, retain) IBOutlet UIBarButtonItem *addPhotoButton; 

- (void) loadPhotos; 
- (IBAction) addPhoto; 
- (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize; 
@end 


#import "RootViewController.h" 

@implementation RootViewController 
@synthesize photos, picker, addPhotoButton; 

- (void)viewDidLoad 
{ 
    self.photos = [[NSMutableArray alloc] initWithCapacity:50]; 
    [self loadPhotos]; 
    [super viewDidLoad]; 
} 

任何想法?以下是XIB

http://img148.imageshack.us/img148/189/nib.png的屏幕截圖。

讓我知道你是否需要更多信息。

+0

您可以發佈NIB文件的圖像,其左側有對象層次結構列表嗎? –

+0

完成:http://img148.imageshack.us/img148/189/nib.png我也將添加到帖子中。 – agmcleod

+0

說阻止登錄 –

回答

0

取而代之的是一個根視圖控制器,使它成爲UINavigationController *navigationController

然後在applicationDidFinishLaunching,說

navigationController = [[UINavigationController alloc]init]; 
FirstViewController *firstView = [FirstViewController alloc]init]; 
[self pushViewController:firstView animated:NO]; 
firstView.title = @"TITLE"; 
[self addSubview:navigationController.view]; 

編輯:一些示例代碼我在我的一個應用

AppDelegate.h

#import <UIKit/UIKit.h> 

@interface DragonAge2AppDelegate : NSObject <UIApplicationDelegate> { 
UIWindow *window; 
UINavigationController *navigationController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 

@end 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
TitleClass *titlePage = [[TitleClass alloc]init]; 

navigationController = [[UINavigationController alloc]init]; 
titlePage.title = @"Dragon Age 2"; 
[navigationController pushViewController:titlePage animated:NO]; 
[titlePage release]; 

// Override point for customization after application launch. 
[window addSubview:navigationController.view]; 
[self.window makeKeyAndVisible]; 

return YES; 
} 
+0

FirstViewController從哪裏來?而且即時通訊不知道當我使用IBoutlet將它映射到XIB上時,是否理解切換到UINavigation控制器。 – agmcleod

+0

FirstViewController是應用第一次加載時想要顯示的任何控制器。我想你的情況下,它會被稱爲RootViewController。基本上,我的建議是在應用程序加載後儘快將您試圖顯示的表格推送到視圖中。而不是自定義類。保持簡單。 –

+0

感謝您的澄清。我將RootViewController的實例放在XIB上,因此從視覺角度來看更容易管理。如果你覺得它的價值,而沒有XIB的學習經驗,我會給它一個鏡頭。我初始化了導航控制器並完成了工作。但是,當我嘗試推送rootViewController對象時,它會在此處引發SIG ABORT。 – agmcleod

0

您需要檢查一些要點:

  • 在執行application:didFinishLaunchingWithOptions:的代碼,當你運行應用程序?在此代碼中添加一個NSLog(@"app launched")或在其中設置一個斷點來檢查它。如果未被調用,則您的FTPPhotosAppDelegate對象可能未被設置爲XIB中的UIApplication單身人員的代表(如果您使用標準模板創建應用程序,此連接應默認完成),但值得檢查
  • 您的AppDelegate的navigationControllerIBOutlet已正確連接到XIB中的實際UINavigationController?檢查(使用NSLog或斷點)它不是nil
  • XIB中的UINavigationController對象的視圖IBOutlet相同:請檢查它是否正確連接,而不是nil
+0

它看起來像XIB中的Photos App Delegate對象缺少與文件所有者的連接。當我建立連接並重建時,它現在在主方法中以BAD_ACCESS異常崩潰。 'int retVal = UIApplicationMain(argc,argv,nil,nil);' – agmcleod