按钮显示空输出

时间:2012-01-12 16:31:11

标签: iphone objective-c ios

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 个答案:

答案 0 :(得分:3)

我的猜测是你永远不会调用-init方法。

我想你是用-initWithNibName:bundle方法创建视图控制器的。我对么?如果是这样,你永远不会调用-init方法。因此,不要在questions方法中设置实例变量-init,而是在主初始化方法中执行:-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;
}