2014-02-06 2 views
0

사용자가 다른 안경을 시도 할 수있는 응용 프로그램을 만들고 있습니다.모든 내용을 바꾸지 않고보기 컨트롤러 업데이트하기

mainview 컨트롤러에는 두 개의 IUImageView (사진 및 안경)가 있습니다. 이보기 컨트롤러에는 두 개의 단추 (사진 찍기 및 사진 선택)가 있습니다. 사용자가 탐색 버튼을 스 와이프하거나 탭하면 사이드 탐색이 나타나며 사용자는 시도 할 안경 한 쌍을 선택할 수 있습니다.

그러나이 옵션은 사용자가 한 쌍의 안경을 선택한 경우에만 작동합니다. 한 쌍의 안경을 선택하면 사진이 완전히 무시되기 때문에 다른 방법 대신 사진을 찍거나 선택합니다.

이것은 내가 어떻게 허용하는지, 그리고보기가 오버라이드되지 않도록 사용자가 사진을 찍은 다음 한 쌍의 안경을 선택하면 사진이 거기에 머물러 있으면 안경이 나타납니다. 너무.

지금 현재 코드 상 :

는 안경의 각 쌍은 네비게이션 버튼을 갖는

는이 버튼의 하나의 예이다 ...

- (IBAction)glass_one_pressed:(id)sender{ 
[self performSegueWithIdentifier:@"imageChangeSegue" sender:nil];} 

SEGUE은 다음과 같다 ... 스토리 보드의

//Segue for glasses one 
if ([[segue identifier] isEqualToString:@"imageChangeSegue"]) { 
    NewViewController *secondViewController = segue.destinationViewController; 
    secondViewController.theImageForTheImageView = [UIImage imageNamed:@"glasses_one.png"]; 
} 

이미지 : http://postimg.org/image/rcjfai52d/

나는 모든 것을 충분히 설명했으면 좋겠다. 그렇지 않다면 나는 당신이 볼 수 있도록 프로젝트를 업로드했다.

다운로드 우편 번호 : 어떤 도움은 매우 극명하게 될 것이다 https://mega.co.nz/#!9hxmjSZT!L7UFGpKBC5CsQQtuPGh0SVfRN4TdxLLRvh6jJW-TmD0

. iOS 개발에 익숙하지 않고 웹 개발 작업을하기 때문에 Objective-C와 PHP 코딩의 차이점은 엄청나 다.

감사합니다. 잭.

+0

이 작업을 수행하려면 다른 패러다임이 필요하다고 생각합니다. 한 쌍의 안경을 선택하면 새 컨트롤러로 전환하는 대신 사진이있는 안경으로 다시 돌아가며 안경은 얼굴 위로 추가 된 이미지보기에 있어야하며 드래그 할 수 있으므로 원하는 곳으로 이동할 수 있습니다. 안경 이미지는 또한 현재 보이지 않는 투명한 배경을 가져야합니다. – rdelmar

답변

0

문제는 새로운 NewViewController를 만들 때마다 발생한다는 것입니다.

//Segue for glasses one 
if ([[segue identifier] isEqualToString:@"imageChangeSegue"]) { 
    NewViewController *secondViewController = segue.destinationViewController; 
    secondViewController.theImageForTheImageView = [UIImage imageNamed:@"glasses_one.png"]; 
} 

는 대신 네비게이션 컨트롤러를 숨기거나 실제 NewViewController에 표시된 사진을 저장하고 새도를 설정해야합니다.


SidebarViewController.m에서 실행되는 상기 SEGUE 것을 차단하는 방법을 추가한다. 핸들러 같은

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 
{ 
    if ([identifier isEqualToString:@"imageChangeSegue"] || [identifier isEqualToString:@"glasses_two"]) { 
     return NO; 
    } 
    return YES; 
} 

변경 : NewViewController에서

//When glasses one button is pressed... 
- (IBAction)glass_one_pressed:(id)sender{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    SWRevealViewController *contr = (SWRevealViewController *)appDelegate.initialViewController; 
    //close the sidebar 
    [contr revealToggleAnimated:YES]; 
    //set the new image 
    appDelegate.myNewViewController.glassView.image = [UIImage imageNamed:@"glasses_one.png"]; 
} 

추가 : AppDelegate.h에서

- (void)viewDidAppear:(BOOL)animated 
{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    appDelegate.myNewViewController = self; 
} 

추가 : AppDelegate에에서

@property (strong, nonatomic) SWRevealViewController *initialViewController; 
@property (strong, nonatomic) NewViewController *myNewViewController; 

.이 줄을 응용 프로그램에 추가하십시오. didFinishLaunchingWithOptions : 방법 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 
    //save the SWRevealViewController 
    self.initialViewController = (SWRevealViewController*)self.window.rootViewController; 

    return YES; 
} 
+0

안녕 다니엘, 도와 줘서 고마워. 당신이 나에게 몇 가지 예제 코드를 줄 수 있는지, 아니면 네비게이션 컨트롤러를 숨기거나 NewViewController 내에 그림을 저장하여이를 가능하게하는 법을 배우기 위해 정확한 장소로 안내 할 수 있는지 궁금합니다. 나는 약간의 구글을 가지고 다른 것들을 시도했지만 나는 아직 성공하지 못했다. 고마워, 잭 –

+0

@ZackJones이 코드로 시도하십시오, 작동해야합니다 – drolando

+0

당신은 선생님이 천재입니다! 완벽하게 작동합니다 :) 감사합니다. –

관련 문제