2011-05-05 5 views
0

버튼을 누르면 응용 프로그램에 "정보 페이지"를 표시하려하지만 UIButton을 누르면 NSLog (@ "Button pressed")가 호출되지만 보기가로드되지 않습니다. 여기 내 코드입니다 :.xib 파일을로드하고 표시하십시오.

- (IBAction)pushAbout { 
    NSLog(@"Button pressed"); 
    AboutView * aboutView = [[AboutView alloc] initWithNibName:@"AboutView" bundle:nil]; 
    [self.navigationController pushViewController:aboutView animated:YES]; 
    [aboutView release]; 
} 

내가 예에서이 코드를 본 적이 있지만 그것은있는 UITableViewController 대신의 ordianry의 UIView의 컨트롤러에서 호출되었다.

"AboutView"클래스 파일은 UIViewController 하위 클래스로 만들어졌습니다. 그들은 작성

+0

번들에 AboutView.xib 파일이 있습니까? –

+0

예, AboutView.m 및 AboutView.h와 함께 추가되었으며 레이블이 하나만 포함되었습니다. –

+0

아무 일도 일어나지 않습니까? 또는 하얀보기가 나타 납니까? AboutView.xib가 대상에 제대로 추가 되었습니까? 그리고 xib 파일을 저장 했습니까? 가끔 내 xib을 편집하고 저장하는 것을 잊어 버렸습니다 ... –

답변

1

예 UINavigationController 집합이 없습니다.

은 당신의 행동에

NSLog(@"nav? %@", self.navigationController); 

을 추가하고 당신은 (null)와 덤프 것을 볼 수 있습니다. 뷰가 표시됩니다

[self presentModalViewController:aboutView animated:YES]; 

대신

[self.navigationController pushViewController:aboutView animated:YES]; 

의 :이 코드를 입력하면

그러나, AboutView.xib 잘 작동합니다. 압축 된 예제에서 AboutView.xib에는 레이블이 없으므로 흰색 페이지로 표시되는지 궁금하지 마십시오.

당신은 당신의 AboutViewController에

[self dismissModalViewControllerAnimated:YES]; 

를 사용하여 발표 모달보기를 취소 할 수 있습니다.

UINavigationController를 사용하려면 Navigation-Based Application 템플릿으로 앱을 만드는 것이 좋습니다.

+0

나는 그것을 저장하는 안개 같아 보인다. 어쨌든 코드가 작동합니다. 정말 고마워 –

2

추측을 그대로 남았다 : 귀하의 견해는

self.navigationController 

실제로 nil입니다 따라서, UINavigationController가 아닌, 그리고 아무 일도 발생하지 않습니다.

해결책은 탐색 컨트롤러에 기본보기를 배치하고 응용 프로그램의 기본 창에 탐색 컨트롤러의보기를 추가하는 것입니다. 이 일을

하는 간단한 방법 :

앱 위임에서

변경,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: 
(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 

    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions 
(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    UINavigationController* navController = [[UINavigationController alloc] 
     initWithRootViewController:self.viewController]; 

    self.window.rootViewController = navController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

또는 유사한. 이것은 단지 당신을 시작하게하고, 아마도 그것을하는 가장 좋은 방법이 아님을주의하십시오. (xcode에서 방금보기 기반 응용 프로그램을 만든 것으로 가정했습니다.)

+0

나는 Obj-C를 아주 좋아한다. 모든 자습서 어떻게 그럴 수 있습니까? 편집 : 자기 mainViewController, 내 버튼의 모든 콘센트 및 동작을 포함하는 사람입니다 –

+0

간단한 튜토리얼에 대한 편집 답변을 참조하십시오. – uvesten

+0

고마워요,하지만 위의 내용은 제가 잘 사용할 수 있도록 잘 작동했습니다. 다시 고마워, 어쨌든 –