標籤:framework 項目開發 天氣查詢 控制器 視頻教程
課程背景:
彙總資料是一家國內最大的基礎資料 API 供應商。免費提供從天氣查詢、空氣品質、地圖座標到金融基金、電商比價、違章查詢等各個領域的安全、穩定和高效的資料。開發人員可以免費使用彙總資料 API 進行移動 App 的快速開發,免除資料收集、維護等環節,大大降低開發週期及成本。
核心內容:
1.條碼查詢器結構分析。
2.如何將彙總資料 SDK 添加到工程中。
3.模型以及業務類的封裝。
4.控制器間的資料傳遞。
5.tableView 以及 webView 的使用。
開發環境:Xcode 6、Mac OS X 10.10
課程大綱
1. 條碼查詢器介面搭建
12:53650) this.width=650;" src="http://s1.jikexueyuan.com/v3/static/images/common/ue-time-14-1.png" alt="播放按鈕" style="border:none;" />
本課時通過分析條碼查詢的UI結構和商務邏輯,快速的搭建起條碼查詢器的業務介面。
2. 彙總資料SDK使用介紹
13:15650) this.width=650;" src="http://s1.jikexueyuan.com/v3/static/images/common/ue-time-14-1.png" alt="播放按鈕" style="border:none;" />
本課時介紹彙總資料SDK的下載,以及通過 SDK 使用文檔和其中的 Demo,為工程添加 framework,並通過申請彙總資料帳號,擷取工程需要的 openID 和請求參數。並通過測試程式碼分析彙總資料的返回資料。
3. 城市選擇介面完善
21:22650) this.width=650;" src="http://s1.jikexueyuan.com/v3/static/images/common/ue-time-14-1.png" alt="播放按鈕" style="border:none;" />
本課時示範如何將第三方架構以及極客學院老師封裝好的業務類以及模型添加到工程中並快速使用,並將擷取的資料顯示在城市選擇介面,並實現城市選擇介面和首頁的資料傳遞。
4. 商品詳情介面初步完善
24:41650) this.width=650;" src="http://s1.jikexueyuan.com/v3/static/images/common/ue-time-14-1.png" alt="播放按鈕" style="border:none;" />
本課時分析商品詳情介面資料,示範如何使用已經封裝好的業務類和模型將電商和超市資料顯示到介面上,並給出彙總資料擷取資料類型不確定的解決方案。
5. 商品詳情介面完整資料展示
19:03650) this.width=650;" src="http://s1.jikexueyuan.com/v3/static/images/common/ue-time-14-1.png" alt="播放按鈕" style="border:none;" />
本課時示範如何添加組頭控制項以及如何利用Xib快速建立一個 tableView 的 HeaderView ,並將伺服器資料利用模型傳遞到 Xib 內的控制項中,其中 imageView 的圖片顯示用到了 SDWebImage。
6. 購買介面完善
13:43650) this.width=650;" src="http://s1.jikexueyuan.com/v3/static/images/common/ue-time-14-1.png" alt="播放按鈕" style="border:none;" />
本課時示範如何將 UIViewController 中控制器的 view 換成 webView,並利用 webView 展示購買介面,並利用 MBProgressHUD 給出了電商無購買連結時候的UI提示。
課程原型圖
650) this.width=650;" src="http://img.blog.csdn.net/20141105144629084?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU29yb3NX/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:none;" />
650) this.width=650;" src="http://img.blog.csdn.net/20141105144647539?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU29yb3NX/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:none;" />
650) this.width=650;" src="http://img.blog.csdn.net/20141105144707585?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU29yb3NX/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:none;" />
650) this.width=650;" src="http://img.blog.csdn.net/20141105144742281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU29yb3NX/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="border:none;" />
課程代碼片段
@interface ViewController () <JKCitiesControllerDelegate>
@property (nonatomic, copy) NSString *cityID;
@property (weak, nonatomic) IBOutlet UITextField *inputTextField;
@end
@implementation ViewController
- (IBAction)chaxunOnClick {
if (!self.inputTextField.hasText) {
[MBProgressHUD showError:@"請輸入商品條碼!"];
return;
}
JKGoodsController *gVC = [[JKGoodsController alloc] init];
BarCodeParam *param = [[BarCodeParam alloc] init];
param.cityid = self.cityID;
#warning 實際開發這裡傳入的是文本輸入看中的字串
param.barcode = @"6923450601822";
//param.barcode = self.inputTextField.text;
gVC.barCodeParam = param;
[self.navigationController pushViewController:gVC animated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[JHOpenidSupplier shareSupplier] registerJuheAPIByOpenId:JHOpenID];
self.title = @"條碼查詢器";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"上海" style:UIBarButtonItemStyleDone target:self action:@selector(openCitiesVC)];
self.cityID = @"1";
//
// [self test:kJHAPIS_EX_JHBAR_CITY parameters:@{ @"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0"}];
[self test:kJHAPIS_EX_JHBAR_BAR parameters:@{ @"barcode": @"6923450601822" ,@"cityid":@"1" , @"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0" }];
// [self test:kJHAPIS_EX_JHBAR_BUY parameters:@{ @"barcode":@"6923450601822" , @"dsid":@"5" ,@"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0"}];
}
- (void)test:(NSString *)path parameters:(NSDictionary *)parameters{
JuheAPI *juheapi = [JuheAPI shareJuheApi];
[juheapi executeWorkWithAPI:path
parameters:parameters
success:^(id responseObject){
if ([[parameters objectForKey:@"dtype"] isEqualToString:@"xml"]) {
NSLog(@"***xml*** \n %@", responseObject);
}else{
int error_code = [[responseObject objectForKey:@"error_code"] intValue];
if (!error_code) {
NSLog(@" %@", responseObject);
}else{
NSLog(@" %@", responseObject);
}
}
} failure:^(NSError *error) {
NSLog(@"error: %@",error.description);
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)openCitiesVC
{
JKCitiesController *cVC = [[JKCitiesController alloc] init];
cVC.delegate = self;
[self.navigationController pushViewController:cVC animated:YES];
}
#pragma mark - JKCitiesControllerDelegate
- (void)backToMainVcWithCity:(City *)city
{
// 1.替換右上方中按鈕的 title
self.navigationItem.rightBarButtonItem.title = city.cityname;
// 2.傳遞給主控制器一個 cityid 的資料
self.cityID = [NSString stringWithFormat:@"%@", city.cityid];
}
課程地址:http://www.jikexueyuan.com/course/324.html
[視頻教程] 彙總資料 iOS 項目開發實戰:條碼查詢器