我使用MVC模型,但我不能得到所需的數據來看,我試圖用一個數據源,因爲視圖不應該擁有自己的數據。通常,協議用於創建數據源。的Objective-C,使用協議來訪問數據源
- 我有一個MVC:。CalculatorBrain [HM] - CalculatorViewController [HM] - (視圖的.xib)
- 我也有MVC:GraphingView - GraphingViewController - (模型是數據我不能獲得)
目標是:當我按下計算器上的一個按鈕時,它將繪製當前正在顯示的函數(例如:x + 5 =)。計算器部分負責表達/功能,顯示等,而繪圖部分應該繪製。 CalculatorViewController應該是GraphingView的源,但數據始終保持爲空。
這是GraphingView.h與協議的聲明:方法:
@class GraphingView;
@protocol GraphingViewSource
- (float)getDataPoints:(GraphingView *)requestor;
@end
@interface GraphingView : UIView {
id <GraphingViewSource> source;
}
@property (assign) id <GraphingViewSource> source;
@end
CalculatorViewController.m通過實施getDataPoints實現協議。 CalculationViewController.h的報頭:
@interface CalculatorViewController : UIViewController <GraphingViewSource>
按應建立與數據源的按鈕:
- (IBAction)graphPressed:(UIButton *)sender
{
GraphingViewController *graphingVC = [[GraphingViewController alloc] init];
graphingVC.graphingView.source = self;
[self.navigationController pushViewController:graphingVC animated:YES];
[graphingVC release];
}
按下按鈕等很好地帶來了新的視圖,但以下的代碼行只返回null (內GraphingView.m):
float result = [self.source getDataPoints:self];
看來,我無法訪問我的數據源...
使用調試,你調用'[self.source getDataPoints:self]'時看到了什麼?它是否進入你的'CalculatorViewController',或者是'source' nil? – jrturton
我確實沒有進入CalculatorViewcontroller,源代碼是0x0 ... – mmvie
然後'graphingVC.graphingView'可能在您設置'source'時是'nil'。有沒有這個xib或者你在代碼中創建視圖? – jrturton