我对编程很陌生。我正在创建一个非常简单的 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
当我运行应用程序时,除了从数据模型中检索数据外,一切正常。重播时,请用编码回复。