0

我对编程很陌生。我正在创建一个非常简单的 iOS 测验应用程序,只是为了练习。这是我到目前为止所做的:

  • 我使用“单一视图”模板创建了 Xcode 项目。因此,我已经有了 appDelegate 文件、视图控制器和视图(XIB 文件)。

    • 我的视图只有四个控制器:2 个 UILabel 和 2 个 UIButton。每个按钮都与一个标签配对。我有这 4 个控制器设置的所有连接。当用户点击标记为“获取状态”的按钮时,它需要使用我在名为 stateArray 的 NSMutableArray 中的状态名称填充它的标签。当用户点击标有“获取资本”的按钮时,需要在其标签中填充该州的首都。

    • 我创建了一个继承自 NSObject 的 Objective-C 类来保存我的名为 dataModel 的数据模型。在 dataModel.m 文件中,我创建并填充了两个数组。

    • 在视图控制器 .m 文件中,我导入了 dataModel.h 文件。

我遇到的唯一问题是让视图控制器从 dataModel 文件中检索数据。我已经读过我可能应该使用委托,但我只是想知道如何更简单地做到这一点......我准备了一些关于视图控制器和数据模型文件应该相互引用的东西?如果是这样,编码会是什么样子?

到目前为止,这是我的编码:

#import <UIKit/UIKit.h>
@interface onMyOwnViewController : UIViewController

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

- (IBAction)answerButton:(id)sender;
- (IBAction)stateButton:(id)sender;
@end




#import "onMyOwnViewController.h"
#import "dataModel.h"

@implementation onMyOwnViewController

- (IBAction)stateButton:(id)sender
{

    NSString *myState = [stateArray objectAtIndex:0]; //this line produces an error.
    [_stateField setText:myState];
    [_answerField setText:@"hi"];    
}

- (IBAction)answerButton:(id)sender
{

}
@end

下面是我的dataModel编码:

#import <Foundation/Foundation.h>

@interface dataModel : NSObject

@property(nonatomic, strong) NSMutableArray *answerArray;
@property(nonatomic, strong) NSMutableArray *stateArray;

@end



#import "dataModel.h"
#import "onMyOwnViewController.h"

@implementation dataModel

- (id)init
{
    self = [super init];
    if(self){
    _answerArray = [[NSMutableArray alloc]initWithObjects:@"Michigan", @"Illinios", nil];

    _stateArray = [[NSMutableArray alloc]initWithObjects:@"Lansing", @"Springfield",
                   nil];
    }

    return self;
}
@end

当我运行应用程序时,除了从数据模型中检索数据外,一切正常。重播时,请用编码回复。

4

1 回答 1

0

您需要在 onMyOwnViewController 中创建 dataModel 的实例。

@implementation onMyOwnViewController {
  dataModel *data;
}

-(void)viewDidLoad {
  data = [[dataModel alloc] init];
}

然后在你的方法调用中

- (IBAction)stateButton:(id)sender
{

   NSString *myState = data.stateArray[0];
   ...
}
于 2013-03-20T19:11:45.520 回答