demo 下载地址:http://download.csdn.net/detail/robinson_911/8349659
昨天花了点时间重新学习了下UITableView 和自定义导航栏,写了个demo以备后面查看。
先说昨天遇到的问题,
1.demo写完后,发现表格老是有重叠页面,同时表格的位置不能能够控制。最后发现原来是:
@interface SwwTableViewController :UITableView<UITableViewDelegate,UITableViewDataSource>
SwwTableViewController继承的是UITableView,所以会出现重叠页面,同时UITableView的位置也不能控制。
最后改为继承UIViewController后,就不会出现上面的情况了。
@interface SwwTableViewController :UIViewController<UITableViewDelegate,UITableViewDataSource>
2.自定义有标题栏的UITableView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headView = [[[UIView alloc] init] autorelease]; [headView setFrame:CGRectMake(0, 100, 320, 30)]; headView.backgroundColor = [UIColor whiteColor]; // headView.backgroundColor = [UIColor groupTableViewBackgroundColor]; //边框2 UIView *borderView = [[UIView alloc] initWithFrame:CGRectMake(10, 30, 300, 1)]; borderView.layer.backgroundColor = [[UIColor grayColor] CGColor]; borderView.layer.borderWidth = 1.0f; [headView addSubview:borderView]; [borderView release]; UILabel *_orderLable = [self _generateHintLabel]; [_orderLable setFrame:CGRectMake(3, headerHight, 60, 20)]; [headView addSubview:_orderLable]; UILabel *_productLable = [self _generateHintLabel]; [_productLable setFrame:CGRectMake(60, headerHight, 60, 20)]; [headView addSubview:_productLable]; UILabel *_doLable = [self _generateHintLabel]; [_doLable setFrame:CGRectMake(125, headerHight, 60, 20)]; [headView addSubview:_doLable]; UILabel *_buyTimeLable = [self _generateHintLabel]; [_buyTimeLable setFrame:CGRectMake(165, headerHight, 60, 20)]; [headView addSubview:_buyTimeLable]; UILabel *_buyMoneyLable = [self _generateHintLabel]; [_buyMoneyLable setFrame:CGRectMake(240, headerHight, 60, 20)]; [headView addSubview:_buyMoneyLable]; //第一个section的标题栏 if ( section == 0 ) { _orderLable.text = @"订单号"; _productLable.text = @"产品名称"; _doLable.text = @"操作"; _buyTimeLable.text = @"购买时间"; _buyMoneyLable.text = @"购买金额"; } return headView; }
3.自定义导航栏
//方法一 自定义导航栏
UINavigationBar *_navigationBar = [[UINavigationBar alloc] init];
_navigationBar.frame = CGRectMake(0, 20, MAIN_SCREEN_WIDTH, 44);
_navigationBar.backgroundColor = [UIColor redColor];
[self.view addSubview:_navigationBar];
UILabel *titleText = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, MAIN_SCREEN_WIDTH, 44)];
// titleText.backgroundColor = [UIColor clearColor];
titleText.textColor=[UIColor blackColor];
[titleText setFont:[UIFont systemFontOfSize:14.0]];
titleText.textAlignment = NSTextAlignmentCenter;
titleText.text =@"导航栏Demo";
[_navigationBar addSubview:titleText];
UINavigationItem *navigationItem = nil;
UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"top_icon_back"] forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
button.frame = CGRectMake(0, 6, 49, 31);
//[button setTitle:@"返回" forState:UIControlStateNormal];
[_navigationBar addSubview:button];
//方法二 自定义导航栏 UIButton *setingBtn = [UIButton buttonWithType:UIButtonTypeCustom]; setingBtn.frame = CGRectMake(0, 6, 49, 31); [setingBtn setBackgroundImage:[UIImage imageNamed:@"top_icon_back"] forState:UIControlStateNormal]; setingBtn.backgroundColor = [UIColor clearColor]; //创建一个导航栏 UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)]; navigationBar.backgroundColor = [UIColor redColor]; //创建一个导航栏集合 UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil]; //创建一个左边按钮 UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStyleBordered target:self action:@selector(clickLeftButton)]; //创建一个右边按钮 UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"下一页" style:UIBarButtonItemStyleDone target:self action:@selector(clickRightButton)]; //设置导航栏内容 [navigationItem setTitle:@"导航栏Demo"]; //1 .把导航栏集合添加入导航栏中,设置动画关闭 // [navigationBar pushNavigationItem:navigationItem animated:NO]; //2.把导航栏集合添加入导航栏中 [navigationBar setItems: [NSArray arrayWithObject: navigationItem]]; //把左右两个按钮添加入导航栏集合中 // [navigationItem setLeftBarButtonItem:leftButton]; navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:setingBtn] autorelease]; [navigationItem setRightBarButtonItem:rightButton]; //把导航栏添加到视图中 [self.view addSubview:navigationBar]; //释放对象 [navigationItem release]; [leftButton release]; [rightButton release];
//方法三 自定义导航栏 UIButton *setingBtn = [UIButton buttonWithType:UIButtonTypeCustom]; setingBtn.frame = CGRectMake(200, 6, 49, 31); [setingBtn setBackgroundImage:[UIImage imageNamed:@"top_icon_back"] forState:UIControlStateNormal]; setingBtn.backgroundColor = [UIColor clearColor]; UIToolbar *myToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 20, MAIN_SCREEN_WIDTH, 44)]; [self.view addSubview:myToolBar]; UIBarButtonItem *bn1 = [[UIBarButtonItem alloc] initWithTitle:@"OK" style:UIBarButtonItemStylePlain target:nil action:nil] ; UIBarButtonItem *bn3 = [[UIBarButtonItem alloc]initWithCustomView :setingBtn]; [myToolBar setItems:[NSArray arrayWithObjects:bn1,bn3, nil]]; UILabel *titleText = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, MAIN_SCREEN_WIDTH, 44)]; // titleText.backgroundColor = [UIColor clearColor]; titleText.textColor=[UIColor blackColor]; [titleText setFont:[UIFont systemFontOfSize:14.0]]; titleText.textAlignment = NSTextAlignmentCenter; titleText.text =@"导航栏Demo"; [myToolBar addSubview:titleText];