2012-04-25 4 views
1

iOS 4.2 이상에서 범용 애플리케이션을 만들고 있습니다.XIB가로드되지 않습니다 ... 그냥 검은 색 화면을 보여줍니다.

나는 펜촉이 DataInputViewController_iPhone.xib입니다. 첫 번째보기 컨트롤러에서 나는 DataInputViewController 클래스를 시작해야하는 버튼이 있습니다. 그러나 XIB 파일의 내용은 표시하지 않습니다. 그냥 검은 화면을 보여줍니다.

왜 그런가?

나는 새로운 뷰 컨트롤러를 호출하는 코드가이 방법

-(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을 새로운 뷰 컨트롤러의 init 방법에 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

프로젝트로 이동> 빌드 Phases> 번들 리소스를 복사하고 xib 파일이 있는지 확인하십시오. –

답변

1

내가 수정 한 유일한 방법은 nibs 및 클래스를 삭제 한 다음 다시 작성하는 것입니다. 특히 우아하지는 않지만 작동합니다 ...

+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' 그들은 괜찮다고 생각합니다. 끝 비트 괜찮 니? –

0

이렇게하면 도움이 될 수 있습니다. 시뮬레이터 나 장치에서 앱을 삭제하고 다시 실행하십시오. 특히 이름이나 로컬 리 제이션과 관련하여 너무 많이 뾰족하게 뒤틀린다면 모든 것이 작동한다는 것을 알 수 있습니다. 그러나 Xcode는 실제로 변경 사항을 무시하고 있습니다.

따라서 시뮬레이터 나 장치에서 삭제 (제품 -> 청소)하고 다시 실행하십시오.

+0

고마워. 나는 이것을 여러 번했지만, 아무 소용이 없었다. :/어딘가에서 뭔가 잘못되었거나 틀렸을 것입니다. 방금 수업과 펜촉을 다시 만들었습니다. :) –

1

나는 똑같은 문제가있었습니다. 프로젝트를 정리하고 Xcode를 닫은 다음 Mac을 재부팅하고 프로젝트를 다시여십시오. 그리고 이전에 시뮬레이터 나 장치에서 앱 삭제를 잊지 마세요.

0

당신은 당신의 DataInputViewController.m 년에는 loadView 메소드를 구현해야합니다해야하고 방법 내에서 다음과 같이 라인 [슈퍼에는 loadView]을 추가


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

내가에서 출구를 드래그하지 않는 것이 발견 사용자 지정 하위 클래스 UITableViewCell.h 또는 .m 파일의 File Owner (파일 소유자)도 검정색을 유발할 수 있습니다. 콘센트를 UITableViewCell의 하위 클래스와 연결된 두 파일 중 하나로 드래그해야합니다.

1

유틸리티보기 컨트롤러에 iPad 또는 iPhone .xib 파일을로드해야하는 것과 동일한 문제가있었습니다. IBOutlets로 링크 된 많은 UILabel 및 UITextField 요소가 포함 된 양식입니다. 전체 레이아웃을 구성하고 모든 요소를 ​​연결하면 구축하고 실행할 때까지 제대로 작동합니다. 나는이 글에 게시 된 조언을 받아서 .xib 파일과 클래스 파일 (IBOutlets를 많이 연결)을 다시 만들었습니다. 성공하지 못했습니다.

문제는 이것입니다. 루트 뷰는 클래스 구현시 @synthesized 될 수 없습니다. 기본보기를 합성하자마자 모든 것이 검은 색으로 변했습니다. 단순히 "@synthesize view;"를 제거하면됩니다. 모든 것이 매력처럼 작동했습니다. 내 View Controller를 제시 할 때 모든 것이 다시 존재했습니다.

#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"를 제거 : 여기

#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 

합성되는 루트보기 구현 파일입니다 : 여기

는 IBOutlets 모두와 클래스의 헤더 파일입니다 합성중인 속성 목록에서이 문제를 해결해야합니다. iPad와 iPhone 레이아웃 모두에 대한 .xib 파일을 삭제하고 다시 작성하는 것보다 훨씬 쉽습니다. 참고로 내가 목표 SDK와 엑스 코드 4.6.3을 사용하고

= 6.1

는 I는이 시간과 매우 실망 문제를 경험하는 다른 사람을 도움이되기를 바랍니다.

0

내 경우, 동료로부터 xib 파일을 받았습니다. 잘로드 된 xib하지만 표시되지 않았습니다. 숨겨진 체크 박스가 선택되었으므로 하루를 전부 보냈습니다

xib의 숨겨진 체크 박스를 선택하십시오.

0

간단한 수정! 버전 편집기로 돌아가 표준 편집기로 다시 돌아가서

관련 문제