VBPieChart - removeFromSuperView 不起作用(隐藏图表)
Posted
技术标签:
【中文标题】VBPieChart - removeFromSuperView 不起作用(隐藏图表)【英文标题】:VBPieChart - removeFromSuperView not working (hide chart) 【发布时间】:2017-04-21 06:19:35 【问题描述】:我使用的是 VBPieChart,在 Objective C 语言中。我在分段控件的valueChange
上显示图表,例如:
- (IBAction)segmentControlAction:(UISegmentedControl *)sender
switch ([sender selectedSegmentIndex])
case 0:
[self showPieChart:NO];
_tableViewForCount.hidden = NO;
[_tableViewForCount reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationRight];
break;
case 1:
_tableViewForCount.hidden = YES;
[self showPieChart:YES];
break;
default:
NSLog(@"None");
break;
showPieChart
方法如下:
- (void) showPieChart:(Boolean)visible
VBPieChart *chart = [[VBPieChart alloc] initWithFrame:CGRectMake(0, 0, 250, 250)];
chart.center = self.view.center;
// Setup some options:
[chart setHoleRadiusPrecent:0.3]; /* hole inside of chart */
// Prepare your data
NSMutableArray *chartValues = [[NSMutableArray alloc]initWithObjects: @@"name":@"Apples", @"value":@50, @"color":[UIColor redColor],
@@"name":@"Pears", @"value":@20, @"color":[UIColor blueColor],
@@"name":@"Oranges", @"value":@40, @"color":[UIColor orangeColor],
@@"name":@"Bananas", @"value":@70, @"color":[UIColor purpleColor], nil
];
if (visible)
chart.center = self.view.center;
// Present pie chart with animation
[chart setChartValues:chartValues animation:YES duration:0.4 options:VBPieChartAnimationFan];
[self.view addSubview:chart];
else
// remove chart
[chart removeFromSuperView];
由于VBPieChart
只是 UIView 的自定义子类,因此应该可以。但我没有取得任何成功。
我也尝试过 [chart setHidden:YES];
和 [chart setAlpha:0.0];
,但仍然没有运气。
任何帮助将不胜感激。我只想在用户切换回段索引 0 时隐藏/删除图表。
谢谢。
【问题讨论】:
【参考方案1】:VBPieChart *chart 在.h文件上创建这个对象然后
- (void) showPieChart:(Boolean)visible
if(chart == nil)
chart = [[VBPieChart alloc] initWithFrame:CGRectMake(0, 0, 250, 250)];
[self.view addSubview:chart];
chart.center = self.view.center;
// Setup some options:
[chart setHoleRadiusPrecent:0.3]; /* hole inside of chart */
// Prepare your data
NSMutableArray *chartValues = [[NSMutableArray alloc]initWithObjects: @@"name":@"Apples", @"value":@50, @"color":[UIColor redColor],
@@"name":@"Pears", @"value":@20, @"color":[UIColor blueColor],
@@"name":@"Oranges", @"value":@40, @"color":[UIColor orangeColor],
@@"name":@"Bananas", @"value":@70, @"color":[UIColor purpleColor], nil
];
if (visible)
chart.center = self.view.center;
// Present pie chart with animation
[chart setChartValues:chartValues animation:YES duration:0.4 options:VBPieChartAnimationFan];
chart.alpa = 1.0
else
// remove chart
chart.alpa = 0.0
【讨论】:
【参考方案2】:您需要创建如下变量。
static VBPieChart *chart = nil
if(!chart)
chart = [[VBPieChart alloc] initWithFrame:CGRectMake(0, 0, 250, 250)];
if (visible)
chart.hidden = NO;
else
// hide chart
chart.hidden = YES;
【讨论】:
以上是关于VBPieChart - removeFromSuperView 不起作用(隐藏图表)的主要内容,如果未能解决你的问题,请参考以下文章