作者zonble (zonble)
看板MacDev
标题Re: [问题] 关於Model-View-Controller一个问题...
时间Tue Nov 10 17:43:46 2009
※ 引述《shaopin (Linux & Mac lover)》之铭言:
: 如果我有一个NSArray存放不固定数量的CGPoint,
: 这些Point在drawRect中都被用来当作是draw的data
: 但其实这些点也要被某个我的Controller class来增减或改变
: 请问这些data object(NSArray contain CGPoint)
: 是放在View的class底下比较好, 还是放在Controller的class底下
: 比较好ㄋ?
呃…简单讲,你的资料在 controller 里头,view 要用 controller
这边的资料来画图,用正规的作法是,把你的 controller 变成你的
view 的 delegate/dataSource。
就像你在 UIKit framework 里头会看到的-
UIPickerView - UIPickerViewDataSource
UITableView - UITableViewDataSource
-这样的对应关系
你大概会这样写
TestViewController.h
#import <UIKit/UIKit.h>
@class MyView
@protocol MyViewDataSource <NSObject>
- (NSArray *)viewRequestArrayForDrawing:(MyView *)myView;
@end
@interface MyView : UIView
{
id <MyViewDataSource> dataSource;
}
@property (assign) id <MyViewDataSource> dataSource;
@end
@interface TestViewController : UIViewController <MyViewDataSource>
{
MyView *myView;
NSMutableArray *array;
}
@property (retain, nonatomic) IBOutlet MyView *myView;
@end
TestViewController.m
#import "TestViewController.h"
@implementation MyView
- (void)drawRect:(CGRect)rect
{
NSArray *array = [self.dataSource viewRequestArrayForDrawing:self];
// Draw
}
@end
@implementation TestViewController
- (void)viewDidLoad
{
[super viewDidLoad];
myView.dataSource = self;
}
- (NSArray *)viewRequestArrayForDrawing:(MyView *)myView
{
return array;
}
@synthesize myView;
@end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.128.103.143