2010-12-08 5 views
0

단추를 눌렀을 때 다음보기를로드 할 수 없습니다. 버튼을 만들고 IB의 버튼에 checkButtonPress 액션을 첨부했습니다. 그러나 시뮬레이터의 버튼을 누르면 다음 뷰 (ViewOne.xib)가로드되지 않습니다. 코드를 디버깅하려 할 때; NSLog (@ "View One")를 출력하고 있는데, 아래의 if 문에 코드가 그 지점에 도달했지만 다음보기가로드되지 않음을 의미합니다. ViewOne .h, .m .xib 파일을 이미 만들었습니다. 이 코드는 오류 또는 경고와 함께 잘 실행단추를 눌렀을 때보기를로드 할 수 없습니다.

#import "check1ViewController.h" 
#import "ViewOne.h" 

@implementation check1ViewController 

-(IBAction) checkButtonPress: (id) sender{ 
    int button = [sender tag]; 

if(button==1) 
{ 
    NSLog(@"View One"); 
    ViewOne *tempObj = [[ViewOne alloc]initWithNibName:@"ViewOne" bundle:nil]; 
    [self.navigationController pushViewController:tempObj animated:YES]; 
    [tempObj release]; 


} 
else if(button==2) 
{ 
    NSLog(@"View Two"); 
} 
    } 

/* 
// The designated initializer. Override to perform setup that is required before the  view is loaded. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
     // Custom initialization 
    } 
    return self; 
} 
*/ 

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
    } 
*/ 


/* 
// Implement viewDidLoad to do additional setup after loading the view, typically from a  nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 
*/ 



- (void)dealloc { 
    [super dealloc]; 
} 

@end 

: 다음은 check1ViewController.m 구현 파일로 작성된 코드입니다.

내가 작성하는 IB 또는 코드의 일부를 잃었거나 파일의 임의의 메소드를 오버라이드 (override) 할 필요합니까 ... 아니면 다른 방법

전에 IBAction를을 잃어 않은 경우 어떤 제안 미안하지만 나는 dev에 iPhone을 처음 접해서 내가 뭘 잘못했는지 확신하지 못했다. 사전에

덕분에

+1

내비게이션 컨트롤러가 올바르게 설정 되었습니까? 해당 위치에 nil이 아닌지 확인하십시오. – Vladimir

+0

프로젝트를 생성하는 동안 Window 기반 템플리트를 선택했는데 앞에서 설명한 - (IBAction) checkButtonPress 메소드가 다음 뷰를로드하는 유일한 코드입니다. 죄송합니다 ... 궁금한 점은 무엇이든 놓치 셨습니다. – Prazi

답변

0

당신의 응용 프로그램을 탐색 컨트롤러가 너무 AppDelegate에 클래스의 메이크업 객체 창에 다음 뷰를 추가 한 다음 addView에 창에 액세스 필요하지 않습니다.

YourAppDelegate *obj=(YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 

[obj.window addSubView:viewController.view]; 
+0

빠른 답장을 보내 주셔서 감사합니다. 하지만 ... 미안하지만, 아직 아이폰 앱 개발사의 초보자로서 설명하려고하는 것을 얻지 못했습니다. 가능한 경우 두 가지보기가있는 간단한 앱 코드를 작성하십시오. 앱이 실행되면 기본보기가로드되고 기본보기에는 버튼이 하나 있습니다. 버튼을 누르면 다음보기가로드됩니다. 창 기반 템플릿 프로젝트에서이 응용 프로그램을 작성하고 Interface builder를 사용하고 IB에서 각 .xib 파일에 어떤 연결을 만들어 다음보기를로드 할 것인지 제안하십시오. 미리 감사드립니다. – Prazi

+0

응용 프로그램이 윈도우 기반이므로. 네비게이션 컨트롤러를 사용할 수 없습니다. [self.navigationController pushViewController : tempObj animated : YES]; 이 line.ok하지만이 목적을 위해 다른보기를 표시해야하므로 창에보기를 추가 할 수 있습니다. 이제 기본적으로 window는 appDelegate 클래스의 속성입니다. 왜 appDelegate 클래스 (window)의 속성에 액세스해야 window.so에보기를 추가해야 하는지를 위의 코드에서 확인하십시오. .m 클래스 가져 오기 appDelegate.h 파일에서도 가능합니다. 좋아, 시도해보십시오. – Ishu

+0

ypur 답장을 보내 주셔서 감사합니다. 알았다. 위 코드를 다음 코드로 바꾸면 문제가 정렬됩니다. \t { \t NSLog (@ "View One"); \t \t ViewOne * tempObj = [[ViewOne alloc] initWithNibName : nil bundle : nil]; \t \t [self presentModalViewController : tempObj animated : YES];} presentModelViewController의 사용법과 사용 방법 및 사용시기를 설명해 주시겠습니까? 또한 presentModelViewController와 pushViewController의 차이점은 무엇입니까? 그 중 어느 것을 언제 어떻게 사용할지 결정하는 방법. 미리 감사드립니다. – Prazi

관련 문제