iOS学习之驾照题库(练习页面跳转,传值,UITableView,原生json解析)
来源:互联网 发布:安卓录屏软件 编辑:程序博客网 时间:2024/04/30 23:49
仅供自己学习参考笔记
效果图:
新建项目JSONParseDemo
在Main.storyboard拉取UItableView控件到View上(一定不要在此刻关联协议,协议必须在数据从网络端获取到以后再绑定协议),如图:
新建TableViewCell类并创建xib文件
其次,根据数据请求到的json字符串中的字段新建Exams和Details类,用于解析
->Exams.h
#import <Foundation/Foundation.h>@interface Exams : NSObject@property(copy,nonatomic) NSString* error_code;@property(copy,nonatomic) NSString* reason;@property(copy,nonatomic)NSArray* result;@end
->Exam.m
#import "Exams.h"@implementation Exams@synthesize error_code;@synthesize reason;@synthesize result;@end
->Details.h
#import <Foundation/Foundation.h>@interface Details : NSObject@property (copy,nonatomic) NSString* cid;@property(copy,nonatomic) NSString* question;@property(copy,nonatomic) NSString* anwser;@property(copy,nonatomic) NSString* item1;@property(copy,nonatomic) NSString* item2;@property(copy,nonatomic) NSString* item3;@property(copy,nonatomic) NSString* item4;@property(copy,nonatomic) NSString* explains;@property(copy,nonatomic) NSString* url;@end
->Details.m
#import "Details.h"@implementation Details@synthesize cid;@synthesize question;@synthesize anwser;@synthesize item1;@synthesize item2;@synthesize item3;@synthesize item4;@synthesize explains;@synthesize url;@end
ViewController.m代码
//// ViewController.m// JSONParse//// Created by 安前松 on 15/12/16.// Copyright © 2015年 安前松. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; static NSString *urlString=@"http://apis.baidu.com/bbtapi/jztk/jztk_query?subject=1&model=c1&testType=rand"; static NSString* apikey=@"751416ad67dd313690c2caa7633f992b"; NSURL *url=[NSURL URLWithString:urlString]; [self request:url withHttpArg:apikey];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}-(void) request:(NSURL*) requestUrl withHttpArg:(NSString*) apikey{ NSMutableURLRequest * request=[[NSMutableURLRequest alloc] initWithURL:requestUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [request setHTTPMethod:@"GET"]; [request addValue:apikey forHTTPHeaderField:@"apikey"]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response,NSData *data,NSError *error){ if(error){ NSLog(@"Httperror: %@%ld", error.localizedDescription, error.code); }else{ NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode]; NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"HttpResponseCode:%ld", responseCode);// NSLog(@"HttpResponseBody:%@",responseString); [self parse:data]; } }];}-(void)parse:(NSData*)data{ NSError *error=nil; id jsonObject=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; if([jsonObject isKindOfClass:[NSDictionary class]]){ NSDictionary *dictionary=(NSDictionary*)jsonObject; Exams * exam=[Exams new]; NSString *error_code=[dictionary objectForKey:@"error_code"]; NSString *reason=[dictionary objectForKey:@"reason"]; exam.error_code=error_code; exam.reason=reason; NSArray *result=[dictionary objectForKey:@"result"]; NSMutableArray *details=[[NSMutableArray alloc] init]; for(int i=0;i<[result count];i++){ Details *detail=[Details new]; NSDictionary *d=(NSDictionary*)result[i]; NSString* cid=[d objectForKey:@"id"]; NSString * question=[d objectForKey:@"question"]; NSString * anwser=[d objectForKey:@"answer"]; NSString* item1=[d objectForKey:@"item1"]; NSString* item2=[d objectForKey:@"item2"]; NSString* item3=[d objectForKey:@"item3"]; NSString* item4=[d objectForKey:@"item4"]; NSString* explains=[d objectForKey:@"explains"]; NSString* url=[d objectForKey:@"url"]; detail.cid=cid; detail.question=question; detail.anwser=anwser; detail.item1=item1; detail.item2=item2; detail.item3=item3; detail.item4=item4; detail.explains=explains; detail.url=url; [details insertObject:detail atIndex:i]; detail=nil; } self.datas=details; exam.result=details; [self initView:exam]; }}-(void) initView:(Exams*) data{ self.table.delegate=self; self.table.dataSource=self;}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [self.datas count];}-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ TableViewCell *cell=[self.table dequeueReusableCellWithIdentifier:@"cell"]; if(cell==nil){ cell=[[[NSBundle mainBundle] loadNibNamed:@"TableViewCell" owner:self options:nil] lastObject]; } Details *d=self.datas[indexPath.row]; NSString *str=d.cid; NSString* text=[[NSString alloc] initWithString:[NSString stringWithFormat:@"题目%@",str]]; cell.label.text=text; return cell;}-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ DetailView *detailView=[[DetailView alloc] initWithNibName:@"DetailView" bundle:nil]; detailView.detail=self.datas[indexPath.row]; [detailView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; [self presentModalViewController:detailView animated:YES];}@end
详情页面:
新建DetailView并创建xib
->DetailView.h
#import <UIKit/UIKit.h>#import "Details.h"@interface DetailView : UIViewController@property (strong, nonatomic) IBOutlet UITextView *tv_question;@property (strong, nonatomic) IBOutlet UITextView *item1;@property (strong, nonatomic) IBOutlet UITextView *item2;@property (strong, nonatomic) IBOutlet UITextView *item3;@property (strong, nonatomic) IBOutlet UITextView *item4;- (IBAction)back:(id)sender;@property (strong, nonatomic) IBOutlet UIImageView *imageView;- (IBAction)button:(id)sender;@property (strong, nonatomic) IBOutlet UITextView *tv_anwser;@property(strong,nonatomic) Details* detail;@end
->DetailView.m
#import "DetailView.h"@interface DetailView ()@end@implementation DetailView- (void)viewDidLoad { [super viewDidLoad]; self.tv_question.text=self.detail.question; NSString *A=[[NSString alloc] initWithString:[NSString stringWithFormat:@"A:%@",self.detail.item1]]; NSString *B=[[NSString alloc] initWithString:[NSString stringWithFormat:@"B:%@",self.detail.item2]]; NSString *C=[[NSString alloc] initWithString:[NSString stringWithFormat:@"C:%@",self.detail.item3]]; NSString *D=[[NSString alloc] initWithString:[NSString stringWithFormat:@"D:%@",self.detail.item4]]; self.item1.text=A; self.item2.text=B; self.item3.text=C; self.item4.text=D; NSURL *picUrl=[NSURL URLWithString:self.detail.url]; if(picUrl!=nil){ NSData *data=[NSData dataWithContentsOfURL:picUrl]; UIImage *image=[UIImage imageWithData:data]; self.imageView.image=image; }}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (IBAction)button:(id)sender { NSString *s=self.detail.anwser; if([s isEqualToString:@"1"]){ s=@"A"; }else if([s isEqualToString:@"2"]){ s=@"B"; }else if([s isEqualToString:@"3"]){ s=@"C"; }else if([ s isEqualToString:@"4"]){ s=@"D"; } NSString *anwser=[[NSString alloc] initWithString:[NSString stringWithFormat:@"答案:%@",s]]; self.tv_anwser.text=anwser;}- (IBAction)back:(id)sender { [self dismissModalViewControllerAnimated:YES];}@end
0 0
- iOS学习之驾照题库(练习页面跳转,传值,UITableView,原生json解析)
- JSON解析之原生解析
- IOS之页面跳转
- IOS学习之UITableView
- IOS学习之 UITableView
- IOS学习之UITableView
- IOS学习之路十二(UITableView下拉刷新页面)
- IOS学习之路十二(UITableView下拉刷新页面)
- (转)JSON解析之原生解析
- iOS 原生解析Json类NSJsonSerialization
- ios学习-delegate、传值、跳转页面
- IOS学习之——JSON解析
- 【2012.08.06】iOS学习之JSON解析
- iOS开发学习之Json解析
- IOS学习之旅之3 页面跳转及绘制
- json-原生json解析
- JSON数据解析之苹果原生
- iOS JSON解析学习
- hdoj 1999 不可摸数 【数学求因子和】
- JS中showModalDialog 详细使用
- 调用Open CV自带人脸检测
- 在tableview的section的头尾里添加控件的方法,如button达到qq分组的效果
- ffmpeg接收网络流AVFormatContext设置
- iOS学习之驾照题库(练习页面跳转,传值,UITableView,原生json解析)
- Teradata 数据库
- 常用类库简介
- GPRS模块AT呼叫控制命令
- swift学习记录(控制语句----循环语句)
- LeetCode(68) Text Justification
- scala的option和some
- iOS真机调试报错 A valid provisioning profile for this executable was not found.
- 匿名类Anonymous Classes