Re: [問題] 關於Model-View-Controller一個問題...
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):