ios-新浪微博开发-23-加载微博数据
2015-09-20 21:52
381 查看
#import "QHHomeViewController.h" #import "QHDropdownMenu.h" #import "QHTitleMenuTableViewController.h" #import "AFNetworking.h" #import "QHAccountTool.h" #import "QHTitleButton.h" #import "UIImageView+WebCache.h" //https://api.weibo.com/2/users/show.json @interface QHHomeViewController ()<QHDropdownMenuDelegate> /** * 微博数组(里面放的都是字典 每个字典代表一条微博) */ @property(nonatomic,strong)NSArray *statues; @end @implementation QHHomeViewController - (void)viewDidLoad { [super viewDidLoad]; //设置导航栏 [self setupNav]; //获取用户信息(昵称) [self setupUserInfo]; //加载最新的微博数据 [self loadNewStatus]; } /** * 加载最新的微博数据 */ - (void)loadNewStatus { //https://api.weibo.com/2/statuses/friends_timeline.json //1.请求管理者 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; //2.拼接参数 NSMutableDictionary *params = [NSMutableDictionary dictionary]; QHAccount *account = [QHAccountTool account]; params[@"access_token"] = account.access_token; // params[@"count"] = @10; //我们想获取哪些信息直接传参数就可以了 //3.发送请求 [mgr GET:@"https://api.weibo.com/2/statuses/friends_timeline.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { QHLog(@"请求成功%@",responseObject); //取得微博数组 self.statues = responseObject[@"statuses"]; //刷新表格 [self.tableView reloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { QHLog(@"请求失败-%@",error); }]; } /** * 获得用户信息(昵称) */ - (void)setupUserInfo { //https://api.weibo.com/2/users/show.json //access_token false string 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得。 //uid false int64 需要查询的用户ID。 //1.请求管理者 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; //2.拼接请求参数 QHAccount *account = [QHAccountTool account]; NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"access_token"] = account.access_token; params[@"uid"] =account.uid; //3.发送请求 [mgr GET:@"https://api.weibo.com/2/users/show.json" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary * responseObject) { QHLog(@"请求成功%@",responseObject); //标题按钮 UIButton *titleButton = (UIButton *)self.navigationItem.titleView; //设置名字 NSString *name = responseObject[@"name"]; [titleButton setTitle:name forState:UIControlStateNormal]; // [titleButton sizeToFit]; //存储昵称到沙盒中 account.name = name; [QHAccountTool saveAccount:account]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { QHLog(@"请求失败-- %@",error); }]; } /** * 设置导航栏 */ - (void)setupNav { //这时self.view.window 值为空 NSLog(@"%@",self.view.window); /*设置导航栏上面的内容*/ //注意这一调用的是控制器的方法 Tool 里面没有方法 知识调用action 的方法 self.navigationItem.leftBarButtonItem =[UIBarButtonItem itemWithTarget:self Action:@selector(friendSearch) image:@"navigationbar_friendsearch" highImage:@"navigationbar_friendsearch_highlighted"]; self.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithTarget:self Action:@selector(pop) image:@"navigationbar_pop" highImage:@"navigationbar_pop_highlighted"]; QHLog(@"QHHomeViewController"); /*中间的标题按钮*/ QHTitleButton *titleButton = [[QHTitleButton alloc]init]; // titleButton.width = 150; // titleButton.height = 30; //titleButton.backgroundColor = QHRandomColor; //设置图片和文字 NSString * name = [QHAccountTool account].name; [titleButton setTitle:name?name:@"首页" forState:UIControlStateNormal]; // titleButton.imageEdgeInsets = UIEdgeInsetsMake(0, 90, 0, 0); // titleButton.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 40); self.navigationItem.titleView = titleButton; //按钮的自适应 内部的内容有多大 按钮就不用设置 代替了实质宽高 // [titleButton sizeToFit]; //如果图片的某个方向上不规则 比如突起 那么这个方向就不能拉伸 //监听标题的点击 [titleButton addTarget:self action:@selector(titleClick:) forControlEvents:UIControlEventTouchUpInside]; /** * 解决方案 转换坐标系 * * */ } /** * 标题点击 */ -(void)titleClick:(UIButton *)titleButton { //1.创建下拉菜单 QHDropdownMenu *menu = [QHDropdownMenu menu]; menu.delegate = self; //2.设置内容 //menu.content = [UIButton buttonWithType:UIButtonTypeContactAdd]; //menu.content = [[UITableView alloc]initWithFrame:CGRectMake(0,0 , 100, 100) style:UITableViewStylePlain]; QHTitleMenuTableViewController *vc = [[QHTitleMenuTableViewController alloc]init]; vc.view.height = 44*3; vc.view.width = 150; #warning mark 在里面保存了全局变量 所以不会被销毁 menu.contentController = vc; //3.显示 [menu showFrom:titleButton]; //4.让箭头向上 // [menu dismiss]; } #pragma mark - 代理方法QHDropdownMenuDelegate /** * 下拉菜单被销毁了 向下 * * @param menu <#menu description#> */ - (void)dropdownMenueDidDismiss:(QHDropdownMenu *)menu { UIButton *titleButton = (UIButton *)self.navigationItem.titleView; titleButton.selected = NO; // [titleButton setImage:[UIImage imageNamed:@"navigationbar_arrow_down"] forState:UIControlStateNormal]; } /** * 下拉菜单显示了 向上 * * @param menu <#menu description#> */ - (void)dropdownMenueDidShow:(QHDropdownMenu *)menu { UIButton *titleButton = (UIButton *)self.navigationItem.titleView; titleButton.selected = YES; //[titleButton setImage:[UIImage imageNamed:@"navigationbar_arrow_up"] forState:UIControlStateNormal]; } -(void)friendSearch { NSLog(@"friendsearch"); } -(void)pop { NSLog(@"pop"); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.statues.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"status"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } //取出这行对应微博字典 NSDictionary *status = self.statues[indexPath.row]; //取出这条微博的作者(用户) NSDictionary *user = status[@"user"]; cell.textLabel.text = user[@"name"]; //设置微博文字 cell.detailTextLabel.text = status[@"text"]; //设置头像 NSString *imageUrl = user[@"profile_image_url"]; UIImage *placehoder = [UIImage imageNamed:@"avatar_default_small"]; [cell.imageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:placehoder]; //QHLog(@"%@",user); return cell; } @end
相关文章推荐
- ios-新浪微博开发-22-封装标题按钮
- ios-新浪微博开发-21-获取用户昵称
- ios-新浪微博开发20-控制器的切换
- ios-新浪微博开发19-账号存储工具类
- ios-新浪微博开发-18-(授权存储账号信息)用归档实现
- iOS 中常用的四种数据持久化的方法
- iOS ARC简要介绍
- iOS崩溃堆栈符号化,定位问题分分钟搞定!
- Cordova-iOS自定义插件以及和老版本的差异
- iOS开发小白学习体验-9
- 添加图片水印
- iOS项目开发实战——使用CALayer实现图片的淡入淡出效果
- 关于 iOS 程序的内存分析
- Windows下搭建IOS开发环境(一)
- 蓝懿iOS培训日志16 字典
- iOS项目开发实战——使用CALayer和定时器实现进度条
- iOS-常用技巧
- BitMap类型的图形上下文
- iOS项目开发实战——使用定时器实现循环操作
- SSH连接IOS越狱设备