简体   繁体   English

如何在按钮单击时加载UIView

[英]how to load a UIView on button click

I have Seprate UIView which i am using in UIViewController it initially loads but i want that when that is loaded and I again click on the button then it should reload because it has graph creation method which draws graph when view loaded 我有Seprate UIView ,我在UIViewController使用它最初加载但我希望当它加载时我再次点击按钮然后它应该重新加载,因为它有图形创建方法,当视图加载时绘制图形

  #import <UIKit/UIKit.h> 
  #import "ECGraph.h"
  #import "ECGraphItem.h"
  #import "CereniaAppDelegate.h"
  @class GraphsViewController;
  @interface Display : UIView {

NSArray *percentages;
CereniaAppDelegate*appDelegate;
}
  @property(nonatomic,retain)NSArray*percentages;

  -(void) setPercentageArray:(NSArray*) array;
  @end

Implementation files 实施文件

 #import "Display.h"
 #import "ECGraph.h"
 #import "CereniaAppDelegate.h"
 @implementation Display
 @synthesize percentages;
 - (id)initWithFrame:(CGRect)frame {
 self = [super initWithFrame:frame];
 if (self) {
  }
 return self;
 }

- (void)drawRect:(CGRect)rect {

 CGContextRef _context = UIGraphicsGetCurrentContext();


 ECGraph *graph = [[ECGraph alloc] initWithFrame:CGRectMake(70,-70,800,200) withContext:
                  _context isPortrait:NO];

    appDelegate=[[UIApplication sharedApplication]delegate];


ECGraphItem *item1 = [[ECGraphItem alloc] init];

ECGraphItem *item2 = [[ECGraphItem alloc] init];    

ECGraphItem *item3 = [[ECGraphItem alloc] init];
    item1.isPercentage = YES;

int value=(int)roundf(appDelegate.graphValueOne);
item1.yValue=value;
item1.width = 70;
item1.name = @"Unvaccinated horse"; 

int value1=(int)roundf(appDelegate.graphValueTwo);

item2.isPercentage = YES;
item2.yValue=value1;
item2.width = 70; 

item2.name = @"Annually Vaccinated horse";

int value3=(int)roundf(appDelegate.graphValueThree);
item3.isPercentage = YES;
item3.yValue=value3;

item3.width = 70;
item3.name = @"Semi-Annually vaccinated horse";






NSArray *items = [[NSArray alloc] initWithObjects:item1,item2,item3,nil];
[graph setXaxisTitle:@""];
[graph setYaxisTitle:@"Risk"];
[graph setDelegate:self];
[graph setBackgroundColor:[UIColor lightGrayColor]];
[graph drawHistogramWithItems:items lineWidth:2 color:[UIColor blackColor]];


    }
  -(void) setPercentageArray:(NSArray*) array


    {


percentages = array;


NSString*test=[percentages objectAtIndex:0];

NSLog(test);


     }



- (void)dealloc {
   [super dealloc];
    }

   @end

You can get any view to redraw with 您可以使用任何视图重绘

[view setNeedsDisplay];

So on your refresh button you would update the data used by the Display class and then setNeedsDisplay. 因此,在刷新按钮上,您将更新Display类使用的数据,然后更新setNeedsDisplay。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM