【问题标题】:iOS XYPieChart datasource methods not being triggerediOS XYPieChart 数据源方法未被触发
【发布时间】:2013-08-11 16:24:02
【问题描述】:

我正在尝试实现 XYPieCharts,但目前无法显示。在调试时,我在数据源方法中放置了一些日志语句,但没有一个被触发。

我已经包含了委托(未使用)和数据源

@interface DwinklySalaryViewController : UIViewController <UITextFieldDelegate,  XYPieChartDelegate, XYPieChartDataSource>

@property (nonatomic, strong) IBOutlet XYPieChart *salaryPieChart;

我还检查了我已将此 IBOutlet 链接到 Interface Builder 中的 XYPieChart 元素。 Interface Builder 中没有委托/数据源出口,所以我在演示中以编程方式添加了它。此选项以及其余选项均在包含 XYPieChart 视图的视图控制器的 viewDidLoad 方法中设置。

[_salaryPieChart setDelegate:self];
[_salaryPieChart setDataSource:self];

然后我已经实现了数据源协议所需的方法:

- (NSUInteger)numberOfSlicesInPieChart:(XYPieChart *)pieChart
{
    NSLog(@"Number of slices: %d", pieChartSlices.count);
    return pieChartSlices.count;
}

- (CGFloat)pieChart:(XYPieChart *)pieChart valueForSliceAtIndex:(NSUInteger)index
{
    NSLog(@"Value slice: %d", [[pieChartSlices objectAtIndex:index] intValue]);
    return [[pieChartSlices objectAtIndex:index] intValue];
}

- (UIColor *)pieChart:(XYPieChart *)pieChart colorForSliceAtIndex:(NSUInteger)index
{
    NSLog(@"Returning %@", [sliceColors objectAtIndex:(index % sliceColors.count)]);
    return [sliceColors objectAtIndex:(index % sliceColors.count)];
}

谁能告诉我我错过了什么导致数据源方法不触发?

【问题讨论】:

  • 你在 viewDidLoad 或 viewDidAppear 中调用了 reloadData 吗?
  • @rdelmar 哦,我不知道我必须在第一次加载时明确调用它。我认为只有在更新初始数据时才需要重新加载。让我试一试,然后报告结果如何!
  • @rdelmar 效果很好 :) 请添加答案,以便我接受。

标签: ios delegates protocols


【解决方案1】:

看起来,随着 XYPieChart 的工作方式,您可以在启动时调用 reloadData。它在 viewDidLoad 或 viewDidAppear 中都可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多