2013-05-20 2 views
0

버튼을 누르면 다른 하위 버튼에 다른 하위보기가 추가됩니다. 나는 이렇게 해왔다.프로그래밍 방식으로 모달 누름 버튼 만들기 - 목표 -c

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget: @selector(newView)]; 


- (void)newView 
{ 
    UIView *newView = [[UIView alloc]initWithFrame:CGRectmake(0,0,100,100)]; 
    [self.view addSubview:newView]; 
} 

이제 버튼을 누르면 새로운보기가 추가됩니다. IB에서 할 수있는 것처럼 새로운 뷰를 애니메이트하고 싶습니다. 푸시 세그 모달 스타일입니다. 프로그래밍 방식으로 어떻게 할 수 있습니까?

+0

그래서 UIViewController를 추가하고 싶지 않지만 UIView를 추가하고 싶습니다.하지만 UIViewControlle처럼 애니메이션을 적용해야합니다. 나는 이해하고 있나? – CRDave

답변

0

것은이 같은 시도 코드라고 할 수 있습니다.

- (void)newView 
{ 

    [self.view addSubview:newView] 
     newView.frame = // somewhere offscreen, in the direction you want it to appear from 
     [UIView animateWithDuration:10.0 
       animations:^{ 
        newView.frame = // its final location 
     }]; 

} 
+0

새 뷰 만들기를 어떻게 애니메이트합니까? 전체 UIView * newView = ... 애니메이션 안에 넣어 수 없습니다? –

+0

아니요, 버튼을 클릭하여 생성 한 다음보기를 전달하고 프레임 속성을 설정하여 애니메이션을 적용합니다. 나는 그것이 의미가 있기를 바랍니다. – Harish

+0

감사합니다! 그러나 그것이 움직이기 전에 0.5-1 초 정도 걸립니다. 나는 [UIView setAnimateionDelay : 0.0]으로 시도했다. 그러나 어떤 차이도 만들지는 않습니다. –

3

당신은 performSegueWithIdentifier로, 여기

- (void)newView 
{ 
    //execute segue programmatically 
    [self performSegueWithIdentifier: @"MySegue" sender: self]; 
} 
+0

하지만 푸시 세그의 유형을 변경하려면 어떻게해야합니까? 푸시 또는 모달처럼? –

+0

한 가지 방법은 segue를 정의하는 스토리 보드에서 seque 유형을 변경하는 것입니다. 식별자 "스타일". –

+0

정말 도움이됩니다. 내가 시도한 모든 것은 너무 복잡해서 일이 단순 해졌다! – LodgeApps

0

는이 같은 새의 ViewController를 제공 할 수 있습니다 :

- (void)newView 
{ 
    //Embed your new View into a plain UIViewController 
    UIView *newView = [[UIView alloc]initWithFrame:CGRectmake(0,0,100,100)]; 
    UIViewController *yourNewViewController= [[UIViewController alloc] init]; 
    controller.view = newView; 

    //Present it animated   
    [self presentViewController:yourNewViewController animated:YES completion:nil]; 
} 

는 희망이 도움이! :)

+0

보기가로드되었지만 검은 색으로 바뀌 었습니다. ( –

+0

어떻게 뷰를 만듭니 까? 예제 코드에서는 아무 것도 넣지 않았습니다 (단지 initwithframe). 뭔가 더 내부에서 초기화해야합니다. – Marioea

+0

yourNewViewController .view = newView 대신 controller.view = newView? – Das

관련 문제