解散多个视图控制器的代表问题

问题描述:

我问了一个关于先前解除多个视图控制器的问题,并且我给出的答案以及我在其他地方找到的可能解决方案都未能实现预期效果。我已经把我的问题缩小到了我设立我的代表团的方式。代码如下,我真的很感激任何反馈。解散多个视图控制器的代表问题

我的整个项目可以在这里下载: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 

在prepareForSegue方法,你错过了这个行:。

avc.delegate =自我;

+0

谢谢你谢谢谢谢 我是新来的iOS和代表团难倒我的工作完全像我万特。到现在为止。 – JRulle 2012-08-04 01:03:27