【发布时间】:2012-05-03 07:19:21
【问题描述】:
我正在学习斯坦福 2011 年秋季 iOS 课程: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/
我正在执行任务#3: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/assignments/Assignment%203_2.pdf
总而言之,之前的作业要求构建一个常规计算器,现在这个作业要求我们将此计算器推送到导航控制器,并创建从 CalculatorViewController 到 GraphViewController 的 segue,它将绘制存储在“计算器大脑”。这个 CalculatorBrain 是原始 CalculatorViewController 的模型。
提示#5 一直在谈论这样一个事实,即现在 GraphViewController 的模型与 CalculatorViewController 的模型不同,我不明白他的意思。
我能够构建新 MVC 的唯一方法是在 GraphViewController 的 GraphView(视图)中创建一个协议,其中包含一个名为“dataSource”的类型 ID 的对象。然后在 GraphViewController 中:采用该协议,实例化 GraphView 并将其自身设置为数据源:
-(void) setGraphView:(GraphView *)graphView
{
_graphView=graphView;
self.graphView.dataSource=self;
}
然后在原来的CalculatoViewController中,使用prepareForSegue将程序传递给GraphViewController:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"Graph"])
{
GraphViewController *myGraphViewController = segue.destinationViewController;
myGraphViewController.myCalculator=self.myCalcBrain;
}
}
所以这似乎工作正常。所以如果这样的话,那就意味着 GraphViewController 的模型真的是他明确说不是的原始计算器大脑!
我的意思是,在 segue 期间,我将来自原始 CalculatorViewController 的计算器模型实例分配给 Graphviewcontroller 计算器属性,然后使用协议将 Y 值从 GraphViewController 返回到 GraphView,这并不是事实意味着GraphViewController 的模型实际上只是原始的 CalculatorBrain 模型。
【问题讨论】:
-
不是“这个新视图控制器的模型是什么?”究竟是什么要求你弄清楚? 你认为应该是什么?图形视图控制器对哪些数据进行操作?
-
@Caleb 谢谢。真正令人困惑的是,我在 GraphView 类中定义了一个协议(带有一个方法和一个属性),然后让 GraphViewController 实现该协议(和该方法),以使该方法响应所传递的 x 的 Y 值。这让我很困扰,因为在我看来,这告诉我 GraphVC 的模型值(Y)仍然来自主“CalculatorBrain”类,他说它不是。也许这只是语义......我是不是想多了?
标签: ios objective-c model-view-controller cs193p