您的位置:首页 > 移动开发 > IOS开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: