2012-08-03 1 views
0

이전에 여러보기 컨트롤러를 닫는 것에 대한 질문을했고 내가 찾은 가능한 해결책과 함께 제공된 답변이 모두 원하는 효과를 얻지 못했습니다. 나는 나의 대표단을 설립하는 방식으로 내 문제를 무언가로 좁혔다. 코드는 아래에 있고 나는 정말 어떤 의견을 주셔서 감사합니다.여러보기 컨트롤러를 닫는 위임 문제

내 전체 프로젝트는 여기에서 다운로드 할 수 있습니다 https://www.yousendit.com/download/TEhWckhYQVNYSHpIRHNUQw

감사합니다.

// 
// QuestionViewController.h 
// learningTheRopes1 
// 
// Created by James Ulle on 7/18/12. 
// Copyright (c) 2012 __MyCompanyName__. All rights reserved. 
// 

#import <UIKit/UIKit.h> 
#import "Question.h" 
#import "AnswerViewController.h" 

@interface QuestionViewController : UIViewController <AnswerViewControllerDelegate> 

@property (weak, nonatomic) IBOutlet UILabel *currentQuestionDisplay; 

@property (weak, nonatomic) IBOutlet UITextField *userAnswerTextField; 

@property (nonatomic, strong) Question *currentQuestion; 

- (IBAction)dismissKeyboard:(id)sender; 

- (void)dismissQVC; 

@end 

    // 
    // QuestionViewController.m 
    // learningTheRopes1 
    // 
    // Created by James Ulle on 7/18/12. 
    // Copyright (c) 2012 __MyCompanyName__. All rights reserved. 
    // 

    #import "QuestionViewController.h" 

    @interface QuestionViewController() 

    @end 

    @implementation QuestionViewController 

    @synthesize currentQuestionDisplay; 
    @synthesize userAnswerTextField; 
    @synthesize currentQuestion; 

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
     AnswerViewController *avc = [segue destinationViewController]; 
     [avc setCurrentQuestion:currentQuestion]; 
     [avc setUserAnswer:[userAnswerTextField text]]; 
    } 

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    { 
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 

    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.currentQuestionDisplay setText:[currentQuestion question]]; 

    // Do any additional setup after loading the view. 
} 

- (void)viewDidUnload 
{ 
    [self setCurrentQuestionDisplay:nil]; 
    [self setUserAnswerTextField:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (IBAction)dismissKeyboard:(id)sender { 
    [userAnswerTextField resignFirstResponder]; 
} 

- (void)dismissQVC { 
    NSLog(@"Dismiss QVC"); 
    [self.navigationController popViewControllerAnimated:NO]; 
} 

@end 

    // 
// AnswerViewController.h 
// learningTheRopes1 
// 
// Created by James Ulle on 7/18/12. 
// Copyright (c) 2012 __MyCompanyName__. All rights reserved. 
// 

#import <UIKit/UIKit.h> 
#import "Question.h" 

@protocol AnswerViewControllerDelegate <NSObject> 
- (void)dismissQVC; 
@end 

#import "QuestionViewController.h" 

@interface AnswerViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UILabel *displayCurrentAnswer; 

@property (nonatomic, strong) Question *currentQuestion; 

@property (nonatomic, strong) NSString *userAnswer; 

@property (nonatomic, weak) id <AnswerViewControllerDelegate> delegate; 

- (IBAction)dismissAnswerVC:(id)sender; 

@end 

    // 
// AnswerViewController.m 
// learningTheRopes1 
// 
// Created by James Ulle on 7/18/12. 
// Copyright (c) 2012 __MyCompanyName__. All rights reserved. 
// 

#import "AnswerViewController.h" 

@interface AnswerViewController() 

@end 

@implementation AnswerViewController 

@synthesize displayCurrentAnswer; 
@synthesize currentQuestion; 
@synthesize userAnswer; 
@synthesize delegate; 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if([userAnswer isEqualToString:currentQuestion.answer]) { 
     [self.displayCurrentAnswer setText:@"You are correct!"]; 
    } 
    else { 
     [self.displayCurrentAnswer setText:@"You are wrong!"]; 
    } 

    // Do any additional setup after loading the view. 
} 

- (void)viewDidUnload 
{ 
    [self setDisplayCurrentAnswer:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (IBAction)dismissAnswerVC:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:^{ 

     NSLog(@"Dismiss AVC"); 
     [[self delegate] dismissQVC]; 

    }]; 

} 

@end 

그리고 마지막으로 내 출력이 참에 완료 블록이라는 것을 보여 주지만, 다시 dimissQVC에 위임 호출이 발생하지 않는 (이것이다 :

2012-08-03 19:04:34.235 
learningTheRopes1[4165:f803] Dismiss AVC 

답변

1

을 prepareForSegue 방법, 당신이 놓친 라인 :..

avc.delegate = 자기;

+0

덕분에 당신은 당신을 감사합니다 감사합니다 나는 아이폰 OS에 새로운 오전 대표단은 나를 난처한 상황에 빠진했다 내가 wante 정확히처럼 작동합니다.. 지금까지. – JRulle