UI图:http://modao.io/app/H8eZCQdV1pskjQ7z8bLh
四个tab:我要赛、赛事、运动吧、个人中心
赛事页面
1、主要是个NavigationController
2、赛事主页面:SaiShiXinXiEventViewController
UITableView实现
- 点击整块,跳转到赛事详情页
- 点击星星,表示对赛事感兴趣
- 点击分享,分享赛事(预计要用第三方分享sdk)
- 点击筛选,弹出下拉筛选栏,筛选后刷新页面数据
- 点击城市,跳转到城市页
3、城市页:SaiShiXinXiCityViewController
UITableView实现
4、赛事详情页:SaiShiXinXiEventDetailViewController
UITableView实现
- 包含:图片、标题、价格、报名状态、位置、时间、主办方、活动介绍、查看图文详情、已报名赛友、感兴趣赛友、评论、推荐、立即报名
- 点击位置,跳转到地图页
- 点击查看图文详情,跳转到图文详情页
- 点击已报名赛友,跳转已报名赛友列表页
- 点击感兴趣赛友,跳转感兴趣赛友列表页
- 点击我要评论,跳转到评论列表页
- 点击立即报名,跳转到提交订单页
5、地图页:SaiShiXinXiMapViewController
预计要接入地图sdk
6、图文详情页:SaiShiXinXiImageTextDetailViewController
取PC端url,是个webview
7、已报名赛友列表页:SaiShiXinXiRegisteredPlayerListViewController
UITableView实现
8、感兴趣赛友列表页:SaiShiXinXiInterestedPlayerListViewController
UITableView实现
9、评论列表页:SaiShiXinXiCommentListViewController
UITableView实现
底部还一个添加评论
10、提交订单页:SaiShiXinXiOrderSubmitViewController
- 包含:标题、地址、时间、票价信息、参加人员、添加人员按钮、总价、提交按钮
- 点击参加人员的删除按钮,可删除
- 点击添加人员按钮,弹出填写报名信息浮层页,填写完信息后点击确定,可添加人员
- 点击提交按钮,跳转到手机验证页
11、手机验证页:SaiShiXinXiMobileVerificationViewController
验证成功后,弹出报名成功浮层页
问题:支付页?
2015.6.11
从赛事信息主页点击城市按钮,在城市页选择一个城市后跳转回主页面,这时候需要将选择的城市信息回传回来
http://blog.csdn.net/mad1989/article/details/7919504
网上搜了有三种方法:
1、建一个model来专门保存城市信息
2、notification实现
3、delegate实现
这里说一下第二种notification的实现方式
第一步:在发送数据的视图页面,注册+发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"cityNotification" object:@"testNotification"];
第二步:在接收数据的视图页面,接收通知
1 - (void)viewWillAppear:(BOOL)animated { 2 [super viewWillAppear:animated]; 3 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationHandle:) name:@"cityNotification" object:nil]; 4 } 5 - (void)notificationHandle:(NSNotification *)notification { 6 self.selectedCity.title = [notification object]; 7 }
2015.6.12
在自定义 UITableViewCell 时,通常在 初始化操作中加入subview,然后在 layoutSubviews 中定义 subview 的 frame
1 - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier { 2 self = [super initWithReuseIdentifier:reuseIdentifier]; 3 4 if (self) { 5 6 self.backgroundView.backgroundColor = [UIColor lightGrayColor]; 7 8 _titleLabel = [[UILabel alloc] init]; 9 _titleLabel.font = [UIFont systemFontOfSize:kEventInfomationTitleFontSize]; 10 _titleLabel.text = @"2015年“中国移动4G杯”大理千人环洱海自行车赛"; 11 _titleLabel.textColor = [UIColor whiteColor]; 12 13 [self.contentView addSubview:_titleLabel]; 14 } 15 16 return self; 17 } 18 19 - (void)layoutSubviews { 20 [super layoutSubviews]; 21 22 CGFloat width = CGRectGetWidth(self.contentView.bounds); 23 24 { 25 self.titleLabel.frame = CGRectMake(20, 4, width-40, 20); 26 [self.titleLabel sizeToFit]; 27 } 28 }
sizeToFit意思是,如果label中的文字长度没有达到宽度的话,会自动缩短宽度以适配文字的长度;
问题:如何设置tableview的分割线为不可见
解答:
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
2015.6.13
经验:
UIView对象,如果用纯代码形式创建,调用的是 initWithFrame;
如果是在xib活着storyboard中创建,此时 initWithFrame 方法不会被调用,此时如果需要重新设置UIView的各项属性,可以在 initWithCoder 中设置;
问题:
如何设置 UITableViewCell 为不可选中状态
解答:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
原来这种 selecetionStyle有None、Blue、Grey、Default,但在7.0系统之后,只有None和Default两种;
经验:
现在price、location、time、cup、type五种cell都是自定义的,其实有很多重复代码
考虑把图标和文字部分在一个cell的基类实现;
特别之处再另外添加,比如:
price的右侧,有个报名中的图标,可以考虑新建一个stateLabel,将之作为cell.accessoryView;
location的右侧,有个小箭头,这个应该可以系统实现;
cup文字的末尾,有个小图标表示政、体、企等,可以做个图标加上去;
问题:
在自定义的TableViewCell中加了一个属性 imageView,提示错误如下:
Auto property synthesis will not synthesize property 'imageView' because it is 'readwrite' but it will be synthesized 'readonly' via another property
解答:
错误原因是,imageView的名字起的和系统属性一样了,而这个属性是 readonly的
只要换个名字就行啦
问题:
在cell上加了一个button,背景色设为橘黄色,点击cell的颜色设为灰色,目前点击之后,button的背景色也会变成灰色,我想让它保持不变,如何设置?
解答:
1 // 设置背景色 2 typeButton.backgroundColor = [UIColor orangeColor]; 3 4 // 替换为 5 6 // 设置一张带颜色的图片作为背景 7 [typeButton setBackgroundImage:[UIImage imageWithColor:[UIColor orangeColor]] forState:UIControlStateNormal];
其中 imageWithColor 是用少鸿提供的 category
问题:
如何设置UILabel的文本居中?
解答:
titleLabel.textAlignment = NSTextAlignmentCenter;
2015.6.14
问题:
我想让赛事详情页底部的tabbar消失,之前用的方法是:
1 SaiShiXinXiEventDetailVC *edVC = [[SaiShiXinXiEventDetailVC alloc] init]; 2 edVC.hidesBottomBarWhenPushed = YES; 3 [self.navigationController pushViewController:edVC animated:YES];
但是没有生效;
考虑到EventList是storyboard实现的,于是又在storyboard中设置
但还是没有生效;
解答:
问题:
UITableViewCell的分割线左边有一块是空白的,如何改成从头开始的?
解答:
1 // viewDidLoad 中加上如下 2 - (void)viewDidLoad { 3 [super viewDidLoad]; 4 5 if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { 6 [self.tableView setSeparatorInset:UIEdgeInsetsZero]; 7 } 8 9 if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { 10 [self.tableView setLayoutMargins:UIEdgeInsetsZero]; 11 } 12 } 13 14 // 修改willDisplayCell 15 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 16 17 if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { 18 [cell setSeparatorInset:UIEdgeInsetsZero]; 19 } 20 21 if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { 22 [cell setLayoutMargins:UIEdgeInsetsZero]; 23 } 24 }
文档 by xuyang
1、赛事详情页
- M:nil
- V:
- 基类:SaiShiXinXiTableViewCell
- 信息基类:SaiShiXinXiEventInfomationBaseCell
- 头图:SaiShiXinXiEventInfomationImageCell
- 标题:SaiShiXinXiEventInfomationTitleCell
- 活动介绍:SaiShiXinXiEventIntructionTextCell
- 赛友头像:SaiShiXinXiPlayerHeadPhotoCell
- 评论列表:SaiShiXinXiCommentListCell
- 推荐:SaiShiXinXiRecommendDetailCell
- C:SaiShiXinXiEventDetailVC
2、城市选择页
- M:SaiShiXinXiCityModel
- V:nil
- C:SaiShiXinXiCityTableViewController