TableView分組的簡單實現(xiàn)

先說下實現(xiàn)的效果,用戶點擊某個分組,展示該分組的列表钟沛,在展示的同時奴艾,用戶不能通過上下滑動來滑動TableView看杭,在用戶點擊分組的時候,該分組會移動貼近導(dǎo)航欄。類似這樣的效果。思路和上一篇的UICollectionView分組類似涎跨,下面是效果圖:

qh_2.gif

實現(xiàn)的代碼全貼上去,有什么疑問可以在評論里說

@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
{
    NSInteger openSection;
}
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) NSMutableArray *aArr;
@property (nonatomic, strong) NSMutableArray *bArr;
@property (nonatomic, strong) NSMutableArray *cArr;
@property (nonatomic, strong) NSMutableArray *dataArr;

@property (nonatomic, assign) BOOL isDo;
@end

@implementation ViewController
static NSString *const cellID = @"cell";
- (UITableView *)tableView {
    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellID];
    }
    return _tableView;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.title = @"分組";
    _isDo = NO;
    openSection = -1;
    [self.view addSubview:self.tableView];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.dataArr.count;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
    button.backgroundColor = [UIColor cyanColor];
    [button setTitle:[NSString stringWithFormat:@"%ld", section] forState:UIControlStateNormal];
    [button addTarget:self action:sel_registerName("doOpen:") forControlEvents:UIControlEventTouchUpInside];
    button.tag = section + 1000;
    return button;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 44;
}
- (void)doOpen:(UIButton *)sender {
    if (openSection == sender.tag - 1000) {
        _isDo = !_isDo;
        [self.tableView reloadData];
    } else {
        _isDo = NO;
        openSection = sender.tag - 1000;
        [self.tableView reloadData];
    }
    if (!_isDo) {
        self.tableView.scrollEnabled = NO; // 打開狀態(tài) 不能滑動
        [self.tableView setContentOffset:CGPointMake(0, openSection * 44 - 64) animated:YES];
    } else {
        self.tableView.scrollEnabled = YES; // 關(guān)閉狀態(tài) 能夠滑動
    }
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == openSection) {
        if (_isDo) { // YES 為打開過
            return 0;
        } // 沒打開過
        return [self.dataArr[openSection] count];
    }
    return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
    cell.textLabel.text = [_dataArr[indexPath.section][indexPath.row] stringValue];
    return cell;
}

- (NSMutableArray *)aArr {
    if (!_aArr) {
        _aArr = [NSMutableArray arrayWithObjects:@111,@222,@333,@444,@555,@666,@777, nil];
    }
    return _aArr;
}
- (NSMutableArray *)bArr {
    if (!_bArr) {
        _bArr = [NSMutableArray arrayWithObjects:@2222,@4444,@6666,@8888,@1111, nil];
    }
    return _bArr;
}
- (NSMutableArray *)cArr {
    if (!_cArr) {
        _cArr = [NSMutableArray arrayWithObjects:@33333,@55555,@77777,@99999,@11111,@22222,@33333, nil];
    }
    return _cArr;
}
- (NSMutableArray *)dataArr {
    if (!_dataArr) {
        _dataArr = [NSMutableArray arrayWithObjects:self.aArr,self.bArr,self.cArr, nil];
    }
    return _dataArr;
}

該分組效果是在某個App下看到的崭歧,于是就根據(jù)那個效果敲了這個分組給大家分享下隅很。

qh_1.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市率碾,隨后出現(xiàn)的幾起案子外构,更是在濱河造成了極大的恐慌,老刑警劉巖播掷,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撼班,居然都是意外死亡歧匈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門砰嘁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來件炉,“玉大人,你說我怎么就攤上這事矮湘≌迕幔” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵缅阳,是天一觀的道長磕蛇。 經(jīng)常有香客問我,道長十办,這世上最難降的妖魔是什么秀撇? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮向族,結(jié)果婚禮上呵燕,老公的妹妹穿的比我還像新娘。我一直安慰自己件相,他們只是感情好再扭,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布氧苍。 她就那樣靜靜地躺著,像睡著了一般泛范。 火紅的嫁衣襯著肌膚如雪让虐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天敦跌,我揣著相機(jī)與錄音澄干,去河邊找鬼。 笑死柠傍,一個胖子當(dāng)著我的面吹牛麸俘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惧笛,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼从媚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了患整?” 一聲冷哼從身側(cè)響起拜效,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎各谚,沒想到半個月后紧憾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡昌渤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年赴穗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膀息。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡般眉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出潜支,到底是詐尸還是另有隱情甸赃,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布冗酿,位于F島的核電站埠对,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏已烤。R本人自食惡果不足惜鸠窗,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胯究。 院中可真熱鬧稍计,春花似錦、人聲如沸裕循。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至硅则,卻和暖如春淹父,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怎虫。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工暑认, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人大审。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓蘸际,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徒扶。 傳聞我的和親對象是個殘疾皇子粮彤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件姜骡、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 汪家平:上海虹海出租的一名普通雙班車駕駛員。平時給人的印象就是憨厚康栈,樸實闯两,少言寡語。進(jìn)公司十多年了谅将,一直...
    虹海張波閱讀 1,854評論 0 5
  • 生活好像確實告訴了自己很多道理,明白了很多重慢。不走尋常路也好 活著就好饥臂。 時間總會告訴你,全部所有都會變得平淡無奇似踱,...
    劉小九九三閱讀 162評論 0 0
  • 多好的命題作文隅熙,我確實有相當(dāng)多的體會。 這句話也許有兩層意思核芽。第一囚戚,親密關(guān)系中的人是需要成長的。第二轧简,成長不是孤立...
    燕英俊閱讀 502評論 5 0