最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中的二級菜單及Cell的展開收起示例

 更新時間:2017年08月22日 09:02:00   作者:萬之子  
本篇文章主要介紹了iOS中的二級菜單及Cell的展開收起示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

最近又做了一個項目,涉及到二級菜單及cell的展開收起,這是我所做過的第三個項目中做這個功能了,我當(dāng)然不能把公司的項目界面show出來,所以我重新創(chuàng)建一個工程,數(shù)據(jù)都寫的是固定的數(shù)據(jù)。作為總結(jié),記錄實現(xiàn)過程,及要注意的一些點:如進(jìn)來默認(rèn)選中第一行,數(shù)據(jù)優(yōu)化等。

先看看我們實現(xiàn)的效果:


基本UI布局思路:

1.將view分為左右兩部分,左,右分別是一個tableView

2.點擊左邊的cell時候,刷新右邊的數(shù)據(jù)

需要注意及處理的點有:

1.默認(rèn)進(jìn)來界面顯示左邊選中第一行,及對應(yīng)右邊的數(shù)據(jù)

2.每次點擊左邊的cell,右邊都需要刷新數(shù)據(jù),如果每次點擊左邊都要請求一次數(shù)據(jù),那么會很消耗用戶的流量

3.cell的展開收起我們通過cell 的高度變化實現(xiàn)

在這里主要羅列需要注意的那三點,功能的全部實現(xiàn)我已經(jīng)提交到github,需要的伙伴,可以去下載https://github.com/mumuna/AboutCell

首先說明,一般類似這樣的布局,后臺提供接口,左邊的tableview的數(shù)據(jù)源會是一個接口,左邊的tableview的每個cell對應(yīng)的右邊的數(shù)據(jù)也是一個接口,但是不同的cell需要傳入id請求獲取對應(yīng)的數(shù)據(jù),這樣每點擊一個左邊的cell就需要請求一次右邊的數(shù)據(jù)。

1.初次進(jìn)入界面默認(rèn)顯示左邊第一行及對應(yīng)的右邊的數(shù)據(jù),及數(shù)據(jù)優(yōu)化

(1)首先獲取到左邊的tableview所需的數(shù)據(jù)及第一行對應(yīng)的右邊的數(shù)據(jù)
(2)其它cell對應(yīng)的右邊的數(shù)據(jù)我們在tableView didSelectRowAtIndexPath 方法中請求獲得
(3)默認(rèn)選中第一行

 //默認(rèn)選中第一行
  NSIndexPath *ip=[NSIndexPath indexPathForRow:0 inSection:0];
  [leftTable selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionBottom];

(4)在tableView didSelectRowAtIndexPath 方法中,根據(jù)點擊的左邊的cell,請求右邊的數(shù)據(jù)。我們不能每次點擊都請求一次,這樣很耗費用戶的流量。

我們需要把右邊的數(shù)據(jù)放在可變數(shù)組里arr,全部初始化arr = [NSMutable array];,每次點擊,先判斷arr.count ==0 ,如果!=0 再去請求數(shù)據(jù),然后reload data。

2.cell的彈開和收起

在效果圖中可以看到點擊tableview的區(qū)的headerview,對應(yīng)區(qū)的row會彈開收起。

(1)我們在獲取數(shù)據(jù)的時候,創(chuàng)建一個數(shù)組,給每個區(qū)的headerview一個標(biāo)志“0”,即默認(rèn)為收起

//specificaArr是效果圖中左邊的cell英國,對應(yīng)的右邊的數(shù)據(jù)源
//flagArr是左邊對每個區(qū)的標(biāo)識
for (int i = 0; i<specificArr.count; i++) {
    [flagArr addObject:@"0"];
          }

(2)給headerview添加一個手勢,且給headerview一個tag值方便在手勢響應(yīng)事件中知道我們具體點擊的是哪個區(qū)

    view.tag = 100+section;
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(sectionClick:)];
    [view addGestureRecognizer:tap];

(3)在手勢響應(yīng)事件中根據(jù)headerview的標(biāo)識選擇展開還是收起row,且改變標(biāo)識

-(void)sectionClick:(UITapGestureRecognizer *)tap{
//根據(jù)tag值獲取點擊的區(qū)
  int index = tap.view.tag%100;
//創(chuàng)建可變數(shù)據(jù),存儲所點擊的區(qū)的所有行的indexpath,tableview刷新區(qū)對應(yīng)的行,重新設(shè)置行高
  NSMutableArray *indexArray = [[NSMutableArray alloc]init];
  NSArray *arr = specificArr[index];
  for (int i = 0; i<arr.count; i++) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:index];
    [indexArray addObject:path];
  }
  //展開
  if ([flagArr[index] isEqualToString:@"0"]) {
    [flagArr replaceObjectAtIndex:index withObject:@"1"];
    [specificTable reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationBottom];
  }else{
    [flagArr replaceObjectAtIndex:index withObject:@"0"];
    [specificTable reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationBottom];
  }
}

(4)在tableView heightForRowAtIndexPath方法中設(shè)置tableview的高度

 if ([flagArr[indexPath.section] isEqualToString:@"0"]) {
      return 0;
    }else{
      return 96;
    }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Flutter Widgets MediaQuery控件屏幕信息適配

    Flutter Widgets MediaQuery控件屏幕信息適配

    這篇文章主要為大家介紹了Flutter Widgets 之 MediaQuery控件獲取屏幕信息和屏幕適配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • iOS中UIWebView網(wǎng)頁加載組件的基礎(chǔ)及使用技巧實例

    iOS中UIWebView網(wǎng)頁加載組件的基礎(chǔ)及使用技巧實例

    UIWebView是開發(fā)中很常用的應(yīng)用內(nèi)調(diào)用網(wǎng)頁瀏覽的控件,這里整理了一些iOS中UIWebView網(wǎng)頁加載組件的基礎(chǔ)及使用技巧實例 ,需要的朋友可以參考下
    2016-06-06
  • iOS時間字符串格式化輸出技巧詳解

    iOS時間字符串格式化輸出技巧詳解

    本篇文章主要介紹了iOS時間格式化輸出技巧,可以將后臺返回的時間字符串轉(zhuǎn)換為指定的格式時間再顯示在UI上,有興趣的可以了解一下。
    2017-04-04
  • ios開發(fā) try-catch引起的野指針問題排查

    ios開發(fā) try-catch引起的野指針問題排查

    這篇文章主要為大家介紹了ios開發(fā) try-catch引起的野指針問題排查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • IOS關(guān)閉鍵盤的方法

    IOS關(guān)閉鍵盤的方法

    在iOS應(yīng)用開發(fā)中,有三類視圖對象會打開虛擬鍵盤,進(jìn)行輸入操作,但如何關(guān)閉虛擬鍵盤,卻沒有提供自動化的方法。這個需要我們自己去實現(xiàn)。
    2015-05-05
  • 實例講解iOS應(yīng)用的設(shè)計模式開發(fā)中的Visitor訪問者模式

    實例講解iOS應(yīng)用的設(shè)計模式開發(fā)中的Visitor訪問者模式

    這篇文章主要介紹了iOS應(yīng)用的設(shè)計模式開發(fā)中的Visitor訪問者模式的實例,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-03-03
  • Flutter之TabBarView組件項目實戰(zhàn)示例

    Flutter之TabBarView組件項目實戰(zhàn)示例

    這篇文章主要為大家介紹了Flutter之TabBarView組件項目實戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • iOS彈幕開發(fā)中遇到的問題匯總

    iOS彈幕開發(fā)中遇到的問題匯總

    最近做項目的時候需要實現(xiàn)彈幕這個功能, 雖然感覺實現(xiàn)起來也不是很復(fù)雜,但還是遇到了一些問題,下面這篇文章主要給大家總結(jié)介紹了在iOS彈幕開發(fā)中遇到的問題,文中將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-01-01
  • iOS 真機(jī)調(diào)試微信小程序

    iOS 真機(jī)調(diào)試微信小程序

    下面介紹下如何使用 Xcode、Reveal 和 Safari 來真機(jī)調(diào)試 iOS 上的小程序。感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • iOS UIWebView實現(xiàn)禁止用戶復(fù)制剪切功能

    iOS UIWebView實現(xiàn)禁止用戶復(fù)制剪切功能

    這篇文章主要給大家介紹了iOS中的UIWebView如何實現(xiàn)禁止用戶復(fù)制剪切的功能,文中給出了詳細(xì)的示例代碼,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11

最新評論

平舆县| 哈尔滨市| 富阳市| 台湾省| 五大连池市| 西昌市| 富宁县| 双江| 石河子市| 怀安县| 绥中县| 石楼县| 久治县| 乌鲁木齐市| 泊头市| 松潘县| 宣城市| 藁城市| 呼图壁县| 琼结县| 江都市| 廉江市| 伊金霍洛旗| 巴东县| 内丘县| 潜江市| 马关县| 张家口市| 三门峡市| 德阳市| 壤塘县| 晋宁县| 商南县| 呈贡县| 大英县| 西畴县| 四平市| 枞阳县| 铜山县| 稷山县| 江达县|