iOS之商城應(yīng)用中物品屬性選擇+購(gòu)物車功能+訂單確認(rèn)

本實(shí)例直接從當(dāng)前項(xiàng)目中拉出來(lái),實(shí)現(xiàn)的功能簡(jiǎn)單侦另,但是在自己實(shí)現(xiàn)的時(shí)候用的代碼老多多秩命,而且當(dāng)前只接收兩組屬性,不過(guò)屬性實(shí)現(xiàn)了自動(dòng)向下布局褒傅,超出屏幕可以上下滑動(dòng)弃锐,但封裝性不強(qiáng),希望得到牛人指點(diǎn)樊卓。
下面簡(jiǎn)單介紹實(shí)現(xiàn)方法拿愧。


1.購(gòu)物車屬性選擇功能

購(gòu)物屬性選擇.gif
  • 獲取物品屬性信息杠河,并將數(shù)據(jù)直接轉(zhuǎn)換為模型數(shù)據(jù)碌尔。
/**
 *  獲取 商品屬性 數(shù)據(jù)
 */
- (void)getGoodAttrData {
    NSString *URL = [NSString stringWithFormat:@"%@/App/Sylm/yclist",SERVERURL];
    NSMutableDictionary *paramas = [NSMutableDictionary dictionary];
    paramas[@"method"] = @"goods_attr";
    paramas[@"goods_id"] = @"11";
    [LXHttpTool post:URL params:paramas success:^(id json) {
        NSLog(@"%@", json);
        NSInteger status = [json[@"status"] integerValue];
        if (status == 1) {
            NSArray *goodAttrsArr = [GoodAttrModel mj_objectArrayWithKeyValuesArray:json[@"data"]];
            self.goodAttrsArr = goodAttrsArr;      
        } else {
            [SVProgressHUD showErrorWithStatus:@"暫無(wú)商品屬性" maskType:SVProgressHUDMaskTypeGradient];
        }
    } failure:^(NSError *error) {
        [SVProgressHUD showErrorWithStatus:@"請(qǐng)重新加載" maskType:SVProgressHUDMaskTypeGradient];
        NSLog(@"%@", error);
    }];
}
  • 傳遞數(shù)據(jù)模型,生成相應(yīng)的物品屬性按鈕券敌,其中主要用到的是for循環(huán)實(shí)現(xiàn)對(duì)按鈕的布局唾戚。代碼如下:
NSArray *attrValueArr0 = ((GoodAttrModel *)goodAttrsArr[0]).attr_value;
CGFloat one_btnsX = kBigMargin;
CGFloat one_btnY = CGRectGetMaxY(_firstAttributeLbl.frame) + kSmallMargin;
for (int i = 0; i < attrValueArr0.count ; i++) {
    NSString *btnTittle = ((GoodAttrValueModel *)attrValueArr0[i]).attr_value;
    CGSize size = [btnTittle sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:kButtonTextFont, NSFontAttributeName, nil]];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn setTitle:btnTittle forState:UIControlStateNormal];
    btn.titleLabel.font=[UIFont boldSystemFontOfSize:13];
    btn.tag = i;
    [btn addTarget:self action:@selector(attrs1BtnClick:) forControlEvents:UIControlEventTouchUpInside];
    btn.frame = CGRectMake(one_btnsX, one_btnY, size.width + 30, 35);
    one_btnsX += kBigMargin + size.width + kBigMargin;

    while (one_btnsX  > kScreenW) {
        one_btnsX = kBigMargin;
        one_btnY += 45;
        if ((one_btnsX + size.width + 30) > kScreenW) {
            one_btnsX = kBigMargin;
            break;
        }
        btn.frame = CGRectMake(one_btnsX, one_btnY, size.width + 30, 35);
        one_btnsX += 15 + size.width + kBigMargin;
    }
    [btn defaultStyleWithNormalTitleColor:HX_RGB(136, 137, 138) andHighTitleColor:kWhiteColor andBorderColor:LXBorderColor andBackgroundColor:kWhiteColor andHighBgColor:kMAINCOLOR andSelectedBgColor:kMAINCOLOR withcornerRadius:2];
    [self.scrollView addSubview:btn];
    [self.firstBtnsArr addObject:btn];
}
  • 通過(guò)Block來(lái)傳遞選中的屬性,如下:
@property (nonatomic, copy) void (^sureBtnsClick)(NSString *num, NSString *attr_id, NSString *goods_attr_value_1, NSString *goods_attr_value_2);

#pragma mark - 按鈕點(diǎn)擊事件
- (void)sureBtnClick {
    // 購(gòu)買數(shù)量
    NSString *num = self.buyNumsLbl.text;
    // 屬性ID str
    NSString *attr_id1 = [NSString stringWithFormat:@"%@-%@", _goods_attr_1, _goods_attr_value_1];
    NSString *attr_id2 = [NSString stringWithFormat:@"%@-%@", _goods_attr_2, _goods_attr_value_2];
    NSString *attr_id = [NSString stringWithFormat:@"%@|%@", attr_id1, attr_id2];
    if (self.sureBtnsClick) {
        self.sureBtnsClick(num, attr_id, self.goods_attr_value_1, self.goods_attr_value_2);
    }
    [self removeView];
}

2.購(gòu)物車功能

  • 選擇待诅,刪除(+滑動(dòng)刪除)和收藏功能
    其中大部分通過(guò)block來(lái)實(shí)現(xiàn)叹坦,涉及的邏輯有些繞,好亂卑雁,不過(guò)功能還是實(shí)現(xiàn)了募书。效果如下圖:


    購(gòu)物車功能演示

3.訂單確認(rèn)頁(yè)面

  • 實(shí)現(xiàn)購(gòu)物車選定商品之后,進(jìn)入訂單確認(rèn)支付頁(yè)面测蹲。
  • 有三種支付方式:支付寶莹捡、微信和銀聯(lián)。
  • 收貨地址選擇(未完成)扣甲。
    效果圖如下:


    訂單確認(rèn)

小結(jié):回頭研究下用SDAutoLayout來(lái)實(shí)現(xiàn)此種自動(dòng)布局篮赢,最近一直在體驗(yàn)此框架。
令附上Demo地址--->傳送門[Github],注:在此感謝朋友的閱讀启泣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涣脚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寥茫,更是在濱河造成了極大的恐慌遣蚀,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纱耻,死亡現(xiàn)場(chǎng)離奇詭異妙同,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)膝迎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門粥帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人限次,你說(shuō)我怎么就攤上這事芒涡。” “怎么了卖漫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵费尽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我羊始,道長(zhǎng)旱幼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任突委,我火速辦了婚禮柏卤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匀油。我一直安慰自己缘缚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布敌蚜。 她就那樣靜靜地躺著桥滨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弛车。 梳的紋絲不亂的頭發(fā)上齐媒,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音纷跛,去河邊找鬼喻括。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忽舟,可吹牛的內(nèi)容都是我干的双妨。 我是一名探鬼主播淮阐,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刁品!你這毒婦竟也來(lái)了泣特?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挑随,失蹤者是張志新(化名)和其女友劉穎状您,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體兜挨,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膏孟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拌汇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柒桑。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖噪舀,靈堂內(nèi)的尸體忽然破棺而出魁淳,到底是詐尸還是另有隱情,我是刑警寧澤与倡,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布界逛,位于F島的核電站,受9級(jí)特大地震影響纺座,放射性物質(zhì)發(fā)生泄漏息拜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一净响、第九天 我趴在偏房一處隱蔽的房頂上張望少欺。 院中可真熱鬧,春花似錦别惦、人聲如沸狈茉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蹭秋,卻和暖如春扰付,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仁讨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工羽莺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洞豁。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓盐固,卻偏偏與公主長(zhǎng)得像荒给,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刁卜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容