2012-01-12 127 views
1

QuestionsViewController.h:按钮显示为空输出

#import <UIKit/UIKit.h> 
@interface QuestionsViewController : UIViewController 
{  
    int currentQuestionIndex; 
    NSMutableArray *questions; 
    IBOutlet UILabel *questionField; 
} 

-(IBAction)showQuestion:(id)sender; 
@end 

QuestionsViewController.m:

#import "QuestionsViewController.h" 

@implementation QuestionsViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    self.title = NSLocalizedString(@"First", @"First"); 
    self.tabBarItem.image = [UIImage imageNamed:@"first"]; 
} 
return self; 
} 

- (id)init 
{ 
// Call the init method implemented by the superclass 
self = [super init]; 
if (self) { 
// Create two new arrays and make the pointers point to them 
questions = [[NSMutableArray alloc] init]; 

    //Add questions and answers to the array 
    [questions addObject:@"Who are you?"]; 

    [questions addObject:@"Are your talking to me?"]; 

} 
// Return the address of the new object 
return self; 
} 

- (IBAction)showQuestion:(id)sender 
{ 
// Step to the next question 
currentQuestionIndex++; 

// Am I past the last question? 
if (currentQuestionIndex == [questions count]) { 
    // Go back to the first question 
    currentQuestionIndex = 0; 
} 

// Gets the string at the index in the questions array 
NSString *question = [questions objectAtIndex:currentQuestionIndex]; 

// Log the string to the console 
NSLog(@"displaying question: %@", question); 

// Display the string in the question field 
[questionField setText:question]; 
} 

// Removed ViewLifeCycle Code 

@end 

这将构建并在模拟器中运行,但是当我按下按钮showQuestion我得到这样的输出:

2012-01-12 11:15:59.180 2Rounds3[1036:f803] displaying question: (null) 

我在做什么错?

+1

尝试在操作方法中记录你的数组,看看那里有什么? – rishi 2012-01-12 16:41:37

回答

3

我的猜测是你永远不会打电话给-init方法。

我想你正在用-initWithNibName:bundle方法创建你的视图控制器。我对么?如果是这样,你是-init方法永远不会被调用。因此,不要在-init方法中设置实例变量questions,而是在您的主要初始化方法中执行此操作:-initWithNibName:bundle

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.title = NSLocalizedString(@"First", @"First"); 
     self.tabBarItem.image = [UIImage imageNamed:@"first"]; 

     // Create two new arrays and make the pointers point to them 
     questions = [[NSMutableArray alloc] init]; 

     //Add questions and answers to the array 
     [questions addObject:@"Who are you?"]; 

     [questions addObject:@"Are your talking to me?"]; 
    } 
    return self; 
}