我对编程很陌生。我正在创建一个非常简单的iOS测验应用程序,仅供练习。以下是我到目前为止所做的工作:
我使用“单一视图”模板创建了Xcode项目。因此,我已经拥有appDelegate文件,View Controller和View(XIB文件)。
我的视图只有四个控制器:2个UILabel和2个UIButtons。每个按钮都与一个标签配对。我拥有这4个控制器设置的所有连接。当用户点击标有“获取状态”的按钮时,需要使用名为stateArray的NSMutableArray中的状态名称填充其标签。当用户点击标有“获取资金”的按钮时,需要在其标签中填写状态资本的标签。
我创建了一个Objective-C类,它继承自NSObject以保存我的数据模型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
当我运行应用程序时,一切都有效,除了从数据模型中检索数据。重播时,请回复编码。
答案 0 :(得分:0)
您需要在自己的ViewController上创建数据模型的实例。
@implementation onMyOwnViewController {
dataModel *data;
}
-(void)viewDidLoad {
data = [[dataModel alloc] init];
}
然后在你的方法调用中
- (IBAction)stateButton:(id)sender
{
NSString *myState = data.stateArray[0];
...
}