2011-06-19 30 views
1

EDIT:作業中です。以下のコードを参照してください。ビルド実行時に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

root Viewコントローラの代わりに、UINavigationController *navigationControllerにしてください。 applicationDidFinishLaunchingで、その後

は、言う

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

EDIT:私のアプリで私が持っているいくつかのサンプルコード

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はどこから来たのですか?そして、私はUINavigationコントローラへの切り替えを理解しているかどうかわからないので、IBoutletを使ってXIBにマップしています。 – agmcleod

+0

FirstViewControllerは、アプリの最初の読み込み時に表示したいコントローラです。あなたの場合、RootViewControllerと呼ばれるでしょう。基本的には、アプリケーションが読み込まれるとすぐに表示しようとしているテーブルをビューとしてプッシュすることを提案しています。カスタムクラスの代わりに。物事を簡単に保ちます。 –

+0

清算していただきありがとうございます。 RootViewControllerのインスタンスをXIBに保存したので、視覚的な観点から管理する方が簡単です。学習経験のためにXIBなしでそれを行う価値があると思えば、私はそれを撃つでしょう。私はナビゲーションコントローラを初期化し、それを動作させました。しかし、私がrootViewControllerオブジェクトをプッシュしようとすると、そこにSIG ABORTがスローされます。 – agmcleod

0

  • は、アプリケーションを実行したときに実行application:didFinishLaunchingWithOptions:のコードですか? NSLog(@"app launched")をこのコードに追加するか、またはブレークポイントに設定してチェックします。呼び出されていない場合オブジェクトはXIBUIApplicationシングルトンの代理人として設定されていない可能性があります(標準テンプレートを使用してアプリケーションを作成した場合、この接続はデフォルトで実行されますが、チェックする価値があります)
  • AppDelegateのnavigationControllerIBOutletXIBの実際のUINavigationControllerに正しく接続されていますか? nilでないことを確認してください(NSLogまたはブレークポイントを使用)。
  • XIBにあるUINavigationControllerオブジェクトのビューIBOutletと同じです:正しく接続されており、nilではないことを確認してください。
+0

XIBのPhotos App DelegateオブジェクトがFiles Ownerへの接続を失っているようです。接続を確立して再構築すると、メインメソッドのBAD_ACCESS例外が発生してクラッシュするようになりました。 'int retVal = UIApplicationMain(argc、argv、nil、nil);' – agmcleod

関連する問題