私はMVCで長時間働いていますが、このパターンをiOSで正しく使うことは保証されていません。iOSでMVCを使うにはどうすればいいですか
これは、私がモデルビューとコントローラの分割に使用する私の理解とソースコードです。
説明:
モデル(例えば - クラスmymodelという) モデル、これは私のデータです。私は定義された計算のためにモデルを使用し、インターネットからのデータ取得を行い、さらにNSNotificationCenterを通じてモデルの変更についてコントローラに通知します。
コントローラー(たとえば、クラスMyController) コントローラーはモデルデータの要求に直接連絡し、表示内の表示に直接移動できます。
ビュー(たとえば、クラスMyView) ビュー - ユーザーからのイベントの表示と収集。ビューは、ターゲットアクションとデリゲートを介してコントローラとの対話を行うことができます。
コード:
クラスに、mymodel:NSObjectの
.h ... (some header code)
.m
Initialization method...
// method for get data from internet
-(NSData *)my_getDataFromInternet:(NSURL *)url{
NSData *data=[NSData dataWithContentsOfURL:url];
return data;
}
クラスMyController:のUIViewController
#import "MyView.h"
.h
MyView * my_view;
#import "MyData.h"
.m
Initialization method...
- (void)init{
my_view = [[MyView alloc]init];
my_view.my_target = self;
self.view = my_view;
}
-(void)mycontrolleraction{
MyData * my_data = ...
[my_data my_getDataFromInternet:some_url_image];
my_view.my_image = [UIImage imageWithData:self.my_data];
}
クラスMYVIEW:UIViewの
.h
UIImage * my_image;
property(nonatomic, assign)id my_target;
.m
Initialization method...
- (void)initWithFrame{
UIButton * my_button = ...
[button addTarget:my_target ....
my_image = ...
[self addSubview:my_image];
[self addSubview:my_button];
}
私のボタンにターゲットを追加します - my_target(my_target - これはMyControllerです)。ユーザーがMyボタンをタップすると、MyControllerでメソッドが実行され、MyDataクラスのデータが要求されます。
私はMVCでこのメソッドを使用する私の間違いを知りたいと思います。
はい初期化でエラーが発生したことに同意します。これは、xcodeの代わりにサイトにすべてのコードを入力して少し上がったからです。私はこの単純な相互作用の例を、相互作用があるときに単に示すようにした。これは理想的なコードではなく、MVCでの簡単な除算の例です。あなたのコメントと私の質問への答えをありがとう。 –