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)
我做错了什么?
答案 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;
}