需要为程序添加地理位置功能,按城市为基础分类。目前并没有城市位置信息,要实现的功能就是点击右上角的定位按钮,会在新推出的界面上显示当前的定位城市,热门城市,以及所有的城市列表,马上行动吧。实现方式有多种,比如block,代理,这里先使用代理实现。
一、传值
1.新建以视图控制器(LocationViewController),里面初始化一个表格,当然目前还没有数据。
@interface LocationViewController : UIViewController
@property (nonatomic, strong) NSMutableArray *provinces;
@property (nonatomic, strong)UITableView *tableView;
@property (nonatomic, assign) id <LocationViewDelegate> delegate;
@end
这里写了一个协议,方便选中城市之后的回传,当然也可以用NSUserDefault或者其他的方式传。
2.协议LocationDelegate
@protocol LocationViewDelegate <NSObject>
- (void)choseLocalCity:(NSString *)city;
@end
3.在主页面中实现LocationDelegate,并且设置创建的LocationViewController对象的Delegate为self。
@interface CenterViewController ()<LocationViewDelegate>
LocationViewController *location = [[LocationViewController alloc] init];
location.delegate = self;
[self.navigationController pushViewController:location animated:YES];
4.接着CenterViewController实现协议方法choseLocalCity
- (void)choseLocalCity:(NSString *)city{
NSLog(@"+++++++%@",city);
self.title = city;
}
这里只做了简单的打印输出和更改标题
5.然后在LocationViewController的实现部分来初始化表格等信息
- (void)viewDidLoad
{
[super viewDidLoad];
[self addNavBtnItem];
[self loadLocationTableView];
}
// 加载表格
- (void)loadLocationTableView{
CGRect frame = CGRectMake(0,
0,
kDeviceWidth,