我正在努力完成这个过程,以确保我不会错过任何东西。
我有一个UIViewController
,其中UITableView
作为IBOutlet,4个实例变量用于我的图表
@interface CRHourlyTVC () <..., ChartViewDelegate, ...> {
//...
BarChartData *divVarBarData, *storeVarBarData;
CombinedChartData *divHourChartData, *storeHourChartData;
//...
}
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
我们将专注于一个图表,所以我们选择storeHourChartData
我的tableview单元格被设置为点击将切换单元格的高度以仅显示数据或数据与图表,如果点击的单元格正在扩展,它将调用Web服务以将数据加载到图表中那将被提出
for (int i = 0; i < storeData.count; i++) { //store data is an array made from 'responseObject' from AFNetworking
//populate NSMutableArrays using data from AFNetworking GET request
//populates 'storeDates', 'storeVals', 'storeVals2',
}
storeHourChartData = [[CombinedChartData alloc] initWithXVals:storeDates];
storeHourChartData.barData = [self setupBarChartWithValues:storeVals2 withLabel:@"Last Year" withColor:[UIColor chartLY]];
storeHourChartData.lineData = [self setupLineChartWithValues:storeVals withLabel:@"Current Year" withColor:[UIColor chartCY] orColorArray:storeColors];
NSLog(@"\nws-%@", storeHourChartData);
ws - &lt; Charts.CombinedChartData:0x12d86b0b0&gt;
在我的网络服务电话结束时,我执行[self.tableView reloadData];
现在填充我的细胞。在cellForRowAtIndexPath:
cell.hourlyChartView.delegate = self;
cell.hourlyChartView.tag = 202;
//...
[cell.hourlyChartView setData:storeHourChartData];
//cell.hourlyChartView.data = storeHourChartData;
//...
[cell.hourlyChartView setNeedsDisplay];
NSLog(@"\ncell-%ld\n%@\n%@\n-------------", (long)myIndexPath.row, storeHourChartData, cell.hourlyChartView.data);
myIndexPath是我如何跟踪正在展开/折叠的单元格。
细胞-4
这告诉我,单元格im加载数据是单元格点击。
&LT; Charts.CombinedChartData:0x12d86b0b0&gt;
这告诉我我的webservice调用成功并且我的数据已加载。
(空)
这告诉我cell.hourlyChartView.data
为空
(这里有破折号,但SO标记阻止它显示。让我们 假装它显示)
现在如您所见,storeHourChartData
生成<Charts.CombinedChartData: 0x12d86b0b0>
但cell.hourlyChartView.data
为(null)
,即使我在cellForRowAtIndexPath:
[cell.hourlyChartView setData:storeHourChartData];
我完全忘记了为什么我的数据没有被设置。任何帮助将不胜感激。
我的单元格是通过继承UITableViewCell