【发布时间】:2011-09-13 10:22:41
【问题描述】:
我正在使用 MVC 模型,但我无法获取视图所需的数据,我正在尝试使用数据源,因为视图不应该拥有它的数据。通常,协议用于创建数据源。
- 我有一个 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为零? -
我确实没有进入 CalculatorViewcontroller,源是 0x0...
-
那么
graphingVC.graphingView可能在您设置source时是nil。是否有为此的 xib 或者您是否在代码中创建视图? -
有一个xib,在Interface Builder中添加了一个UIView并将其类设置为GraphingView..
标签: objective-c protocols datasource