2012-11-03 7 views
0

Xcode 및 iphone dev에 대한 간단한 자습서부터 시작했습니다. 나는 버튼을 *의 viewDidLoad (ViewController.m)에서 사용자 정의 버튼에 대한 코드를 추가 한 .I 간단한 단일 뷰 프로젝트) 내 버튼이 제대로 표시되어사용자 정의 버튼에서 다른보기로 변경

[aboutBtn addTarget:self action:@selector(showAboutPage) forControlEvents:(UIControlEventTouchUpInside)]; 

와 showAboutPage 기능에서 가리키는를 작성해야 한 강조, 색상, 글꼴에 필요한 모든 코드.

제가 번째 뷰 (redView.xib)로 푸시하기 위해

- (void) showAboutPage 
{ 

} 

내부에 구현해야 어떤 번호. 스토리 보드로 놀아 보는 것은 쉽습니다. "라인 연결"/ 드래그 앤 드롭으로 할 수 있지만 프로그래밍 방식으로 원하는대로 올바른 방법을 배울 수 있습니다. 미리 감사드립니다.

+0

보기 또는보기 컨트롤러를 사용할지 여부를 명확히해야합니다. 푸시 컨트롤러가보기 컨트롤러에 적합하고 redView.xib가보기 컨트롤러가 아닌보기에 더 좋습니다. – sunkehappy

+0

나는이 스레드에서 나중에 대답해야한다고 생각한다. – Theodoros80

답변

0

당신이 (즉, 나는 당신의 설명에서 추론 기능) 뷰 컨트롤러 클래스에이 모든 일을하는지 가정 :

- (void)showAboutPage 
{ 
    AboutPageViewController *about = [[AboutPageViewController alloc] init]; 
    [self presentViewController:about animated:YES]; 
    // If you're not using ARC: 
    [about release]; 
} 
+0

고마워, 나는 결과를 확인하고 돌아올거야. – Theodoros80

+0

그는보기 컨트롤러가 아닌보기를 추가하려고합니다. – sunkehappy

+1

@sunkehappy OP는 자신의 질문에서 OP가 정확하지 않고 일관성없는 용어를 사용하고 자신이 가지고있는 루트 객체가 뷰 컨트롤러이기 때문에 사실 뷰 컨트롤러를 추가하려고한다고 가정합니다. –

1

로보기의 첫 글자, redView => RedView를 대문자로한다. 또 다른 제안은 IBAction을 사용하는 것이 버튼에 타겟을 추가하는 것보다 낫다고 생각합니다. RedView.h, RedView.m 및 RedView.xib를 추가 한 후에는 Interface Builder에서 RedView.xib의 클래스를 RedView로 설정해야합니다. 그럼 당신은 다음과 같이 사용할 수 있습니다 : @ H2CO3가 바로 정답을 제공하고 있지만

- (void) showAboutPage 
{ 
    RedView *redView = [[[NSBundle mainBundle] loadNibNamed:@"RedView" owner:self options:nil]] objectAtIndex:0]; 
    [self.view addSubview:redView]; 
} 
+0

다음과 같은 오류가 나타납니다. 예상되는 식별자 예상치 못한 인터페이스 이름 'RedView': 예상되는 표현입니다. 문제가있는 곳을 알고 계십시오. – Theodoros80

+0

redView에서 클래스를 리팩토링해야한다는 것을 의미합니다 (변수 redView를 마우스 오른쪽 버튼으로 클릭하고 리 팩터 -> 이름 바꾸기를 선택). 그런 다음 작성한 코드를 시도하십시오. – sunkehappy

0

, 나는 단지를 사용하여 같은 당신을 제공, 당신은 또한 적은 코드, 더 많은 구조로이 작업을 수행 할 수있는 추가하고 싶습니다 인터페이스 빌더. IB에서 ViewController1에서 ViewController 2로 segue를 만들고, 식별자를 뭔가 고유 한 것으로 설정하십시오. ToViewController2라고합시다. 그런 다음 방법은 다음과 같을 수 있습니다 :

- (void) showAboutPage { 
    [self performSegueWithIdentifier:@"ToViewController2" sender:self]; 
} 

을 당신은뿐만 아니라 몇 가지 변수를 전달하고 싶었 가정 할 때, 당신이 할 수 있습니다 :

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"ToViewController2"]) { 
     [segue destinationViewController setYourVariable:variable]; 
     // Pass your variables on to the next view here. 
    } 
} 

이것에 대해 좋은 점은, 모든 것을해야한다는 점이다 그 ViewController로부터 몇개의 Segue를 가지고 있으면 (자), 다음의 ViewControllers에 건네 져,이 Methods로 건네받습니다.

관련 문제