Welcome

首页 / 移动开发 / IOS / iOS中创建表格类视图WBDataGridView的实例代码


项目中创建表格, 引用头文件

#import "WBDataGridView.h"- (void)viewDidLoad{[superviewDidLoad];// Do any additional setup after loading the view.self.view.backgroundColor = [UIColorwhiteColor];CGFloat margin = 10.f;CGFloat width = self.view.frame.size.width -2*margin;// - 添加表格 - 两列WBDataGridView *DataGrid = [[WBDataGridViewalloc] initWithFrame:CGRectMake(margin,4*margin , width, 0)andColumnsWidths:@[@(width*0.4),@(width*0.6)]];DataGrid.roundCorner = YES;[DataGrid addRecord:@[@"姓名",@"dylan_lwb_"]];[DataGrid addRecord:@[@"性别",@"男"]];[DataGrid addRecord:@[@"电话",@"110119120"]];[DataGrid addRecord:@[@"邮箱",@"dylan_lwb@163.com"]];[self.viewaddSubview:DataGrid];// - 添加表格 - 多列WBDataGridView *MoreDataGrid = [[WBDataGridViewalloc]initWithFrame:CGRectMake(margin,CGRectGetMaxY(DataGrid.frame) +2*margin , width, 0)andColumnsWidths:@[@(width*0.2),@(width*0.2),@(width*0.2),@(width*0.4)]];MoreDataGrid.roundCorner = YES;[MoreDataGrid addRecord:@[@"姓名",@"姓名",@"姓名",@"dylan_lwb_"]];[MoreDataGrid addRecord:@[@"性别",@"性别",@"性别",@"男"]];[MoreDataGrid addRecord:@[@"电话",@"电话",@"电话",@"110119120"]];[MoreDataGrid addRecord:@[@"邮箱",@"邮箱",@"邮箱",@"dylan_lwb@163.com"]];[self.viewaddSubview:MoreDataGrid];}// WBDataGridView.h #import <UIKit/UIKit.h>extern NSString *const SwitchButtonString;@interface WBDataGridView : UIView@property (retain,nonatomic) NSArray *columnsWidths;@property (assign,nonatomic) NSUInteger lastRowHeight;@property (retain,nonatomic) UIImage *selectedImage;@property (retain,nonatomic) UIImage *unselectedImage;@property (assign,nonatomic) BOOL roundCorner;- (id)initWithFrame:(CGRect)frame andColumnsWidths:(NSArray*)columns;- (void)addRecord:(NSArray*)record;- (NSUInteger)selectedIndex;@end// WBDataGridView.m #import "WBDataGridView.h"NSString * const SwitchButtonString =@"SwitchButtonString";@interface WBDataGridView ()@property (assign,nonatomic) NSUInteger numRows;@property (assign,nonatomic) NSUInteger dy;@property (retain,nonatomic) NSMutableArray *switchButtons;@end@implementation WBDataGridView- (id)initWithFrame:(CGRect)frame andColumnsWidths:(NSArray*)columns{self = [superinitWithFrame:frame];if (self){self.numRows =0;self.columnsWidths = columns;self.dy =0;self.numRows =0;self.switchButtons = [NSMutableArrayarray];}return self;}- (void)addRecord: (NSArray*)record{if(record.count !=self.columnsWidths.count){NSLog(@"!!! Number of items does not match number of columns. !!!");return;}self.lastRowHeight =42;uint dx = 0;NSMutableArray* labels = [NSMutableArrayarray];// - create the items/columns of the rowfor(uint i=0; i<record.count; i++){float colWidth = [[self.columnsWidthsobjectAtIndex:i] floatValue];//colwidth as given at setupCGRect rect = CGRectMake(dx, self.dy, colWidth,self.lastRowHeight);// - adjust X for border overlapping between columnsif(i>0){rect.origin.x -= i;}NSString *oneRecord = [record objectAtIndex:i];if ([oneRecord isEqualToString:SwitchButtonString]){// - set the switch button string as empty, create a label to adjust a cell first, then add the switch upon the labeloneRecord = @"";}UILabel* col1 = [[UILabelalloc] init];[col1.layersetBorderColor:[[UIColorcolorWithWhite:0.821alpha:1.000]CGColor]];[col1.layer setBorderWidth:1.0];col1.font = [UIFontfontWithName:@"Helvetica"size:self.numRows ==0 ? 14.0f :12.0f];col1.textColor = [UIColordarkGrayColor];col1.frame = rect;// - round cornerif ([selfisRoundCorner:i]){col1.layer.cornerRadius =5;col1.layer.masksToBounds =YES;}// - set left reght margins&alignment for the labelNSMutableParagraphStyle *style = [[NSParagraphStyledefaultParagraphStyle]mutableCopy];style.alignment =NSTextAlignmentCenter;NSAttributedString *attrText = [[NSAttributedStringalloc]initWithString:oneRecordattributes:@{NSParagraphStyleAttributeName : style}];col1.lineBreakMode =NSLineBreakByCharWrapping;col1.numberOfLines = 0;col1.attributedText = attrText;[col1 sizeToFit];// - used to find height of longest labelCGFloat h = col1.frame.size.height +10;if(h > self.lastRowHeight){self.lastRowHeight = h;}// - make the label width same as columns"s widthrect.size.width = colWidth;col1.frame = rect;[labels addObject:col1];// - used for setting the next column X positiondx += colWidth;}// - make all the labels of same height and then add to viewfor(uint i=0; i<labels.count; i++){UILabel* tempLabel = (UILabel*)[labelsobjectAtIndex:i];CGRect tempRect = tempLabel.frame;tempRect.size.height =self.lastRowHeight;tempLabel.frame = tempRect;[self addSubview:tempLabel];}// - add the switch button at the first column in current rowif ([record.firstObjectisEqualToString:SwitchButtonString]){UILabel *firstlabel = labels.firstObject;UIButton *oneSwitchButton = [[UIButtonalloc] initWithFrame:CGRectMake(0,0, [self.columnsWidths.firstObjectintegerValue], 40)];oneSwitchButton.center = firstlabel.center;[oneSwitchButton addTarget:selfaction:@selector(tapedSwitchButton:)forControlEvents:UIControlEventTouchUpInside];[oneSwitchButton setBackgroundImage:self.selectedImageforState:UIControlStateSelected];[oneSwitchButton setBackgroundImage:self.unselectedImageforState:UIControlStateNormal];[self.switchButtonsaddObject:oneSwitchButton];// - default selected first row buttonif (self.switchButtons.firstObject == oneSwitchButton){oneSwitchButton.selected = YES;}[self addSubview:oneSwitchButton];}self.numRows++;// - adjust Y for border overlapping beteen rowsself.dy +=self.lastRowHeight-1;CGRect tempRect = self.frame;tempRect.size.height =self.dy;self.frame = tempRect;}- (void)tapedSwitchButton:(UIButton *)button{button.selected = !button.selected;[self.switchButtonsenumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) {UIButton *oneButton = obj;if (oneButton != button){oneButton.selected = NO;}}];}- (NSUInteger)selectedIndex{__block NSUInteger index =0;[self.switchButtonsenumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop) {UIButton *oneButton = obj;if (oneButton.selected ==YES){index = idx;*stop = YES;}}];return index;}- (BOOL)isRoundCorner:(NSInteger)row{return NO;}@end
以上所述是小编给大家介绍的iOS中创建表格类视图WBDataGridView的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!