0

私はプログラミングにかなり慣れていません。練習用に非常にシンプルなiOSクイズアプリを作成しています。これが私がこれまでに成し遂げたことです:

  • 「シングルビュー」テンプレートを使用してXcodeプロジェクトを作成しました。したがって、私はすでにappDelegateファイル、View Controller、およびView(XIBファイル)を持っています。

    • 私のビューには、2つのUILabelと2つのUIButtonの4つのコントローラーしかありません。各ボタンはラベルとペアになっています。これらの4つのコントローラーセットアップのすべての接続があります。ユーザーが[GetaState]というラベルの付いたボタンをタップすると、そのラベルに、stateArrayというNSMutableArrayにある状態の名前を入力する必要があります。ユーザーが「GetCapital」というラベルの付いたボタンをタップすると、そのラベルに州の首都をそのラベルに入力する必要があります。

    • NSObjectから継承してdataModelというデータモデルを保持するObjective-Cクラスを作成しました。dataModel.mファイルで、2つの配列を作成してデータを設定しました。

    • ビューコントローラの.mファイルで、dataModel.hファイルをインポートしました。

私が抱えている唯一の問題は、viewControllerに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 に答える