Re: [問題] 關於Model-View-Controller一個問題...

看板MacDev作者 (zonble)時間14年前 (2009/11/10 17:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1A-JNKB6 (MacDev)
文章代碼(AID): #1A-JNKB6 (MacDev)