#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-新浪微博开发-23-加载微博数据
最新推荐文章于 2016-10-31 18:16:53 发布