2012-08-03 38 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

謝謝你謝謝謝謝 我是新來的iOS和代表團難倒我的工作完全像我萬特。到現在爲止。 – JRulle 2012-08-04 01:03:27