gpt4 book ai didi

ios - UIView 工厂和委托(delegate)

转载 作者:行者123 更新时间:2023-11-28 20:27:37 25 4
gpt4 key购买 nike

我想在 UIView 中绘制图表。问题是如何将数据(点)获取到 View 。如果我创建一个协议(protocol)并将 UIViewController 设置为委托(delegate),我在 UIView 的哪个位置调用委托(delegate)方法(initWithFrame?可能为时过早,并且可能未设置委托(delegate),awakeFromNib?但是 View 是 100% 在代码中创建的,它没有 nib 文件)..

最佳答案

initWithFrame? might be to early, and the delegate might not be set.

事实上,当您在 initWithFrame: 中时,委托(delegate)不能被设置,因为在分配后对对象做的第一件事就是初始化,我. e.在 init 方法返回之前,您不能调用(嗯,至少不这样做是惯用的)任何其他方法。

您需要做的是拥有一个loadDatareloadData 方法,委托(delegate)必须在将自己设置为 View 的委托(delegate)后显式调用该方法。即,从 View Controller 中,您可以这样调用它:

@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;
}

然后,在您的图表绘制 View 中,按如下方式实现- reloadData:

- (void)reloadData
{
// Call the delegate here,
// then do the drawing
}

关于ios - UIView 工厂和委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13440178/

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