ฉันทำงานกับ MVC มาเป็นเวลานาน แต่ไม่มั่นใจว่าฉันใช้รูปแบบนี้ใน iOS อย่างถูกต้อง
นี่คือความเข้าใจและซอร์สโค้ดของฉันซึ่งฉันใช้สำหรับการดิวิชั่นในมุมมองโมเดลและคอนโทรลเลอร์
คำอธิบาย:
โมเดล (เช่น - คลาส 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 ของฉัน) เมื่อผู้ใช้แตะปุ่มของฉัน - วิธีการจะดำเนินการใน MyController และถามข้อมูลจากคลาส MyData ของฉัน
ฉันต้องการทราบว่าข้อผิดพลาดของฉันในการใช้วิธีนี้ใน MVC คืออะไร