2012-04-25 51 views
1

iOS 4.2以降で汎用アプリケーションを作成しています。XIBが読み込まれない...黒い画面が表示される

私には、というペン先があります。表示される最初のビューコントローラーには、クラスDataInputViewControllerを起動するボタンがあります。それは行いますが、XIBファイルの内容は表示されません。黒い画面が表示されます。

これはなぜ起こりますか?

私は新しいビューコントローラを呼び出して、このコードがあります。この方法では、新たなビューコントローラのinit方法で

-(IBAction)clickedButton:(id)sender { 
    if((UIButton *)sender == (UIButton *)startButton){ 
     NSString *nibName; 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      nibName = @"DataInputViewController_iPhone"; 
     } else { 
      nibName = @"DataInputViewController_iPad"; 
     } 

     DataInputViewController *nextVC = [[DataInputViewController alloc] initWithNibName:nibName bundle:nil]; 
     [self.navigationController pushViewController:nextVC animated:YES]; 
    } 
    else if((UIButton *)sender == (UIButton *)otherButton){ 
     NSLog(@"clicked the other button"); 
    } 
} 

NSLoggingはnibNameOrNil変数が正しくを通して引っ張られていることを私に伝えます。

これは(標準)initメソッドはDataInputViewController.mで次のようになります。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

すべてのアイデア、なぜこれが起こっているのでしょうか?または修正方法?

感謝:)

+0

DataInputViewController内でloadView関数を実装しましたか? – Niko

+1

XIBファイルでデータ入力ビューコントローラを調べると、そのXIBのルート要素としてUIViewがあると推測されています。ファイルの所有者ビューがそのルート要素に接続されていることを確認します。 (この場合は警告またはエラーが発生すると思っていましたが、間違っている可能性があります。ボタンを押した後にコンソールにエラーや警告が表示されることはありませんか?) –

+0

project> build Phases>バンドルリソースをコピーし、xibがそこにあることを確認してください。 –

答えて

1

私がこれを修正するために見つけた唯一の方法は、ペン先とクラスを削除してから再作成することです。特に優雅ではありませんが、それは動作します...

+0

これは私がしなければならなかったものです。なぜそれが起こるのだろうか。 :/ –

2

手動でペン先の名前を設定する必要はありません。 DataInputViewController~iphone.xibDataInputViewController~ipad.xibの名前を付けてから、[[DataInputViewController alloc] init]と呼んでください。

詳細については、iOS Supports Device-Specific Resourcesを参照してください。

+0

ありがとう。残念ながら、それは働いていません。まだ黒い画面。 –

+1

iOSには大文字と小文字が区別されるファイルシステムがあります。あなたのnibファイルのケースは正しいですか? – Jim

+0

クラスファイル: 'DataInputViewController' xibファイル:' DataInputViewController〜iPhone'私は彼らがうまくいると思います。最後のビットはOKですか? –

0

これは、あなたを助けるかもしれません:あなたのアプリをシミュレータまたはデバイス上で削除し、再度実行してください。特に、名前やローカリゼーションのように、ペン先をつまんでいると、すべてがうまくいくように見えますが、Xcodeは実際には変更を無視しています。

したがって、シミュレータまたはデバイスからClean(Product-> Clean)を削除して、再度実行してください。

+0

ありがとう。私はこれを何度もやったが、役に立たなかった。 :/どこかに壊れているか間違った何かがあったに違いない。私はクラスとニブを再作成しました。 :) –

1

私は同じ問題がありました。ちょうどあなたのプロジェクトをきれいにし、Xcodeを閉じて、Macを再起動して、プロジェクトをもう一度開いてください。 そして以前にシミュレータやデバイスのappを削除することを忘れないでください。

0

あなたはこのように、あなたのDataInputViewController.mでloadViewメソッドを実装し、メソッド内の行[スーパーloadViewメソッド]を追加してくださいする必要があります。


- (void)loadView { 
    [super loadView]; 
} 
0

からコンセントをドラッグしていないことを私が発見しましたカスタムサブクラス化されたUITableViewCell.hまたは.mファイルのファイル所有者は、黒さも引き起こす可能性があります。コンセントを、UITableViewCellのサブクラスに関連付けられた2つのファイルのいずれかにドラッグするようにしてください。

1

これは、ユーティリティビューコントローラ用にiPadまたはiPhoneの.xibファイルをロードする必要がある場合と同じ問題です。これはフォームなので、IBOutletsとしてリンクされたUILabel要素とUITextField要素が数多くありました。私はレイアウト全体を構築し、すべての要素をリンクし、構築して実行するまでうまくいった。私はこのスレッドでアドバイスを受け取り、.xibとクラスファイル(IBOutletsを大量にリンクしている)を再作成して成功しませんでした。

問題はこれでした。ルートビューは、クラスの実装では@synthesizedできません。ベースビューを合成すると、すべてが黒くなりました。 "@synthesize view;"を単に削除するだけで、すべてが魅力的に機能しました。私がビューコントローラを提示したとき、すべてが再びそこにあった。ここ

はIBOutletsの全てを持つクラスのヘッダファイルである:ここ

#import <UIKit/UIKit.h> 

@interface SignUpFormViewController : UIViewController <UITextFieldDelegate, NSXMLParserDelegate> 

@property (strong, nonatomic) IBOutlet UIView *rootView; 
@property (weak, nonatomic) IBOutlet UILabel *signUpFormLabel; 
@property (weak, nonatomic) IBOutlet UIButton *infoButton; 
@property (weak, nonatomic) IBOutlet UILabel *enterEmailLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterEmailTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterPasswordLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterPasswordTextField; 
@property (weak, nonatomic) IBOutlet UILabel *reEnterPasswordLabel; 
@property (weak, nonatomic) IBOutlet UITextField *reEnterPasswordTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterFirstNameLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterFirstNameTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterLastNameLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterLastNameTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterPhoneNumberLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterPhoneNumberTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterStreetAddressLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterStreetAddressTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterStreetAddress2Label; 
@property (weak, nonatomic) IBOutlet UITextField *enterStreetAddress2TextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterCityLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterCityTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterStateLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterStateTextField; 
@property (weak, nonatomic) IBOutlet UILabel *enterZipLabel; 
@property (weak, nonatomic) IBOutlet UITextField *enterZipTextField; 
@property (weak, nonatomic) IBOutlet UIButton *backButton; 
@property (weak, nonatomic) IBOutlet UIButton *signUpNowButton; 

- (IBAction)infoButtonPressed:(id)sender; 
- (IBAction)backButtonPressed:(id)sender; 
- (IBAction)signUpNowButtonPressed:(id)sender; 

@end 

が合成されるルートビューの実装ファイルである:

#import "SignUpFormViewController.h" 

@implementation SignUpFormViewController 
@synthesize rootView,signUpFormLabel,infoButton,enterEmailLabel,enterEmailTextField,enterPasswordLabel,enterPasswordTextField,reEnterPasswordLabel,reEnterPasswordTextField,enterFirstNameLabel,enterFirstNameTextField,enterLastNameLabel,enterLastNameTextField,enterPhoneNumberLabel,enterPhoneNumberTextField,enterStreetAddressLabel,enterStreetAddressTextField,enterStreetAddress2Label,enterStreetAddress2TextField,enterCityLabel,enterCityTextField,enterStateLabel,enterStateTextField,enterZipLabel,enterZipTextField,backButton,signUpNowButton,btnDone,btnPrev,btnNext,inputAccView,activeTextField,currentString; 

は単に「rootView」を削除します合成されているプロパティのリストからこの問題を修正する必要があります。 iPadとiPhoneの両方のレイアウトの.xibファイルを削除して再作成する方がずっと簡単です。

FYI私は、ターゲットSDKとXcodeの4.6.3を使用しています= 6.1

私は、これは、この時間がかかり、非常にイライラする問題が発生する他の誰に役立ちます願っています。

0

私の場合、 私は同僚からxibファイルを受け取りました。 が正しくロードされましたが、表示されませんでした。 は、非表示のチェックボックスがチェックされているため、1日1時間を費やしました。

チェックボックスにチェックを入れてください。

0

Simple Fix !! バージョンエディタにナビゲートして標準エディタに戻って問題を解決しました

関連する問題