UITableView動態(tài)展示

點擊某行cell時展示此行的更多數(shù)據(jù)审葬,如圖所示。

TableView動態(tài)展示.gif

源代碼如下:

#import "ViewController.h"

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
{
    //展示標(biāo)題
    UITableView *tbView;
    NSArray *array;
    
    //展示詳情
    UITableView *dTbView;
    NSArray *dArr;
    
    NSIndexPath *inPath;//標(biāo)識選中的是第幾行
}
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    tbView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStyleGrouped];
    
    tbView.delegate = self;
    tbView.dataSource = self;
    tbView.tag = 100;
    
    [self.view addSubview:tbView];

    //展示詳情的tableview
    dTbView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
    
    dTbView.delegate = self;
    dTbView.dataSource = self;
    
    dTbView.tag = 200;
    
    array = @[@{@"section":@"1111",@"row":@[@"1111",@"1111",@"1111"]},
              @{@"section":@"2222",@"row":@[@"2222",@"2222",@"2222"]},
              @{@"section":@"3333",@"row":@[@"3333",@"3333",@"3333"]},
              @{@"section":@"4444",@"row":@[@"4444",@"4444",@"4444"]}];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView.tag == tbView.tag)
    {
        return array.count;
    }
    else
    {
        return dArr.count;
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath == inPath && tableView.tag == tbView.tag)
    {
        return 44 * (dArr.count + 1);
    }
    
    return 44;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellId = @"cellID";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    
    if (!cell)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];
    }
    
    if (tableView.tag == tbView.tag)
    {
        if (indexPath == inPath && dArr)
        {
            cell.contentView.backgroundColor = [UIColor redColor];

            UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
            btn.backgroundColor = [UIColor greenColor];
            [btn addTarget:self action:@selector(tapBtn) forControlEvents:UIControlEventTouchUpInside];
            [cell.contentView addSubview:btn];
            
            CGRect frame = CGRectMake(0, 44, 320, 44 * dArr.count);
            [dTbView setFrame:frame];
            [cell.contentView addSubview:dTbView];

            [dTbView reloadData];
        }
        else
        {
            cell.contentView.backgroundColor = [UIColor lightGrayColor];
            cell.textLabel.text = array[indexPath.row][@"section"];
        }
    }
    else
    {
        cell.contentView.backgroundColor = [UIColor darkGrayColor];
        cell.textLabel.text = dArr[indexPath.row];
    }
    
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView.tag == tbView.tag)
    {
        if (!inPath)
        {
            inPath = indexPath;
            dArr = array[indexPath.row][@"row"];
        }

        [tbView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    else
    {
        NSLog(@"詳情選中 %@",dArr[indexPath.row]);
    }
}

- (void)tapBtn
{
    if (inPath)
    {
        dArr = nil;
        
        [tbView reloadRowsAtIndexPaths:@[inPath] withRowAnimation:UITableViewRowAnimationFade];
        
        inPath = nil;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浊仆,一起剝皮案震驚了整個濱河市杖小,隨后出現(xiàn)的幾起案子列林,更是在濱河造成了極大的恐慌终吼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件音念,死亡現(xiàn)場離奇詭異沪饺,居然都是意外死亡,警方通過查閱死者的電腦和手機闷愤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門随闽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肝谭,你說我怎么就攤上這事《晟龋” “怎么了攘烛?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長镀首。 經(jīng)常有香客問我坟漱,道長,這世上最難降的妖魔是什么更哄? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任芋齿,我火速辦了婚禮腥寇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘觅捆。我一直安慰自己赦役,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布栅炒。 她就那樣靜靜地躺著掂摔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赢赊。 梳的紋絲不亂的頭發(fā)上乙漓,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音释移,去河邊找鬼叭披。 笑死,一個胖子當(dāng)著我的面吹牛玩讳,可吹牛的內(nèi)容都是我干的涩蜘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼锋边,長吁一口氣:“原來是場噩夢啊……” “哼皱坛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起豆巨,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤剩辟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后往扔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贩猎,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年萍膛,在試婚紗的時候發(fā)現(xiàn)自己被綠了吭服。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蝗罗,死狀恐怖艇棕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情串塑,我是刑警寧澤沼琉,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站桩匪,受9級特大地震影響打瘪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一闺骚、第九天 我趴在偏房一處隱蔽的房頂上張望彩扔。 院中可真熱鬧,春花似錦僻爽、人聲如沸虫碉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔗衡。三九已至,卻和暖如春乳绕,著一層夾襖步出監(jiān)牢的瞬間绞惦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工洋措, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留济蝉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓菠发,卻偏偏與公主長得像王滤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子滓鸠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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