A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


本人菜鸟一枚哈,我创建的是单界面程序,只有一个viewController和四个视图对象(两个button,两个label)。在view里面建立了两个label分别用于显示问题与相应的答案,还建立了两个button一个用于传递showQuestion的消息给控制器,一个用于传递showAnswer的信息,并且创建了两个数组指针变量指向模型对象里面的数组questions和answers(预设好的问题和答案),IBAction和IBOulet都设置好了,可是主要问题是为什么按下showQuestion键后无法显示question,按下showAnswer键也不能显示answer。我没有设置委托,而且,NSSlog输出的内容是 " displaying question:" null.方法文件ShowViewController.m的代码如下:

[code]
#import "ShowViewController.h"

@interface ShowViewController ()



- (IBAction)showQuestion:(id)sender;


- (IBAction)showAnswer:(id)sender;

@property (weak, nonatomic) IBOutlet UILabel *questionField;
@property (weak, nonatomic) IBOutlet UILabel *answerField;

@end



@implementation ShowViewController //抛出异常,不完整的执行类

      int currentQuestionIndex ;
      NSMutableArray *questions;
      NSMutableArray *answers;
//id声明的是一个实例方法,而实例方法必须放在@implementation里面,放在外面就会出现 [missing context for method declaration]的错误

- (id)init

{
    //调用父类实现的init方法
    self = [super init];
    if(self){
        //创建两个数组对象,为指针赋值,指向这两个数组对象,alloc是给每一个数组里面的元素分配内存
        questions=[[NSMutableArray alloc]init];
        answers=[[NSMutableArray alloc]init];
        [questions addObject:@"what is 7+7"];
        [answers addObject:@"14"];
        
        [questions addObject:@"what is the capital of vermont"];
        [answers addObject:@"Montpelier"];
        
        [questions addObject:@"From what is cognac made?"];
        [answers addObject:@"Grapes"];
  
        
    }
    //返回新对象的地址
    return self;
}


- (IBAction)showQuestion:(id)sender {
   
    //转至下一个问题
    currentQuestionIndex++;
    //判断当前问题是否是最后一个
    if(currentQuestionIndex == [questions count]){
        
        //如果是最后一个问题,则回到第一个问题
        currentQuestionIndex=0;
   
              }
       //按索引获取questions数组中的字符串
       NSString *question=[questions objectAtIndex:currentQuestionIndex];
      
              //用问题标签显示该字符串
       [self.questionField setText:question];
   
       NSLog(@"displaying question: %@",questions);
       //输出questions数组中有多少个元素
       //重置答案标签
       [self.answerField setText:@"???"];
      
       //将从question指针指向的地址中获取的字符串输出到控制台,
      
      

   }


- (IBAction)showAnswer:(id)sender {
    //得到当前问题的答案
    NSString *answer=[answers objectAtIndex:currentQuestionIndex];
   
    //用答案标签显示该答案
    [_answerField setText:answer];
}



- (void)viewDidLoad
{
    [super viewDidLoad];

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马