gpt4 book ai didi

ios - 在 uitableview 单元格内为自定义 View 设置委托(delegate)

转载 作者:行者123 更新时间:2023-11-29 02:50:38 25 4
gpt4 key购买 nike

我不确定这是否可能。

所以我有一个自定义单元格 - 其中包含一个自定义 uiview。这个 UIView 是一个显示条形图的 View 。所以我想设置数据源和该 UIView 的委托(delegate)。

如果我使用该代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *simpleTableIdentifier = @"StatsCell";

StatsTableViewCell *cell = (StatsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"StatsTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}



cell.barChart.dataSource = self ;
dell.barChart.delegate = self;
}

我收到警告:

 Assigning to 'id<JBBarChartViewDelegate>' from incompatible type 'StatsViewController *const __strong'

我该怎么做?然后,如果可能的话——因为将为任何单元格调用该委托(delegate)方法——我如何区分调用了哪些单元格?

我正在使用来自 here 的 JBChartView .

谢谢。

最佳答案

JBBarChartViewdelegate属性类型为 id<JBBarChartViewDelegate> .为了在不收到此警告的情况下将对象设置为委托(delegate),您必须将该类定义为符合 JBBarChartViewDelegate协议(protocol)本身:

@interface YourClass <JBBarChartViewDelegate>

执行此操作后,您会看到任何 @required 的警告您的类尚未实现的协议(protocol)方法(如果有)。您需要实现这些方法。

正如@Lukasz'Severiaan'Grela 所建议的,将单元格作为委托(delegate)/数据源而不是 TableView 可能更有意义。


您也可以通过这样转换对象来消除警告:

cell.barChart.delegate = (id<JBBarChartViewDelegate>)self;

但我强烈建议不要这样做。 如果 self未定义为符合协议(protocol),您不会收到缺少 @required 的警告协议(protocol)方法,因此,您可能会遇到“未知选择器”崩溃。

关于ios - 在 uitableview 单元格内为自定义 View 设置委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24590248/

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