gpt4 book ai didi

ios - 重构代码后使用 self.view

转载 作者:行者123 更新时间:2023-11-29 13:37:45 24 4
gpt4 key购买 nike

我一直在用一个很酷的图表框架 (http://www.shinobicontrols.com/shinobicharts/) 做一些测试,到目前为止我让他们在我的项目上工作。它们看起来棒极了!

就像我在任何测试中所做的那样,我会尽可能简单地实现示例,然后,当它正常工作时,我会继续在代码组织部门进行一些改进。

在我对我所拥有的感到满意之后,我开始稍微重构代码。现在我无法根据我的观点绘制图表。我已经使用 NSLog 测试了对方法的调用,一切都按预期进行了调用。这是处理让我在这里旋转的 View 。让我解释一下我有什么(当它工作时)和我做了什么(破坏它)。

工作场景:

  • ReportsViewController1)导入chartLibrary.h2) 导入chartDatasource.h3) 创建 View 并添加[self.view addSubview:chart];

都在同一个地方。一切顺利。

我为组织代码所做的工作:

1) 创建了一个新类“ChartReports”(起初我认为它应该是 NSObject 但后来我无法使用 View ,所以我改为 UIViewController)2) 将所有导入和绘图代码移至这个新类。为每种类型的图表创建绘图方法。3) 将“ChartReports”导入“ReportsViewController”4) 创建新对象(ChartReports 类型)并将新方法调用到“drawChartX”,位置与我之前的整个代码完全相同(在“ReportsViewController”内)

一切都向南:(

问题是调用是正确的,方法“drawChartX”被调用并且我从头到尾使用 NSLog 以确保代码正在执行,但屏幕上没有绘制任何内容。

我这样创建并调用它:

ChartReports *chart = [[ChartReports alloc] init];

[chart drawChartX];

当我看到我移动的代码(从“ReportsViewController”到“ChartReports”)时,我注意到它仍然到处都是“self.view”。我认为这是绘图中断的地方。 “self”原指“ReportsViewController”,现在指“ChartReports”。

那么,在所有这些之后:我怎样才能告诉“ChartReports”在“ReportsViewController”.view 上绘制而不是在它自己的 View 上绘制?

我尝试了变量和属性,但没有成功。我是否应该将 View 名称作为方法参数发送?

我很抱歉发布这么长的解释,但我没有想法去尝试。任何一般性提示都有助于回到正确的道路上。

一如既往的感谢,

最佳答案

您的 ChartReports 对象不应在您的 ReportsViewController 上绘制,这会破坏基本的 MVC 原则。相反,您应该组织您的代码,以便 ChartReports 对象创建并返回一个 View (即图表),然后您的 ReportsViewController 将使用 addSubview 添加到它的 View 。

通过这种方式,您仍然可以将图表的创建封装在一个单独的对象 (ChartReports) 中,但是您将显示图表的工作留给了 View Controller ,这是它的工作。

关于ios - 重构代码后使用 self.view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com