我想在UIView
. 问题是如何将数据(点)获取到视图中。如果我创建一个协议并将其设置UIViewController
为委托,我在哪里UIView
调用委托方法(initWithFrame
?可能是早期的,并且可能没有设置委托,awakeFromNib
?但是视图是 100% 在代码中创建的,它没有笔尖文件) ..
问问题
236 次
3 回答
3
初始化框架?可能太早了,并且可能没有设置委托。
事实上,委托不能在你进入的时候设置initWithFrame:
,因为你在分配后对一个对象做的第一件事就是初始化,即在 init 方法返回之前,你不能调用(好吧,不这样做是惯用的所以,至少)任何其他方法。
您需要做的是有一个loadData
orreloadData
方法,委托必须在将自己设置为视图的委托后显式调用该方法。即,从视图控制器,您可以这样调用它:
@implementation ChartViewController
- (id)init
{
if ((self = [super init])) {
chartView = [[ChartView alloc] initWithFrame:self.view.frame];
chartView.delegate = self;
[self.view addSubview:chartView];
[chartView reloadData];
}
return self;
}
然后,在您的图表绘制视图中,执行- reloadData
如下:
- (void)reloadData
{
// Call the delegate here,
// then do the drawing
}
于 2012-11-18T12:56:27.903 回答
0
制定协议,但不要称其为委托。称之为数据源:D
无论如何,当你第一次需要数据时调用它..尽可能晚..不在 init 中..可能在 setDataSource 调用中。
或者当您第一次绘制并看到您没有数据时..
看看 UITableView 看看他是怎么做的并模仿它
于 2012-11-18T12:50:14.327 回答
0
更好的方法是使用UIViewController
而不是UIView
. 因为您的那个视图必须管理数据。管理数据是 UIViewController 的工作。
于 2012-11-18T12:57:29.020 回答