AppDelegate.m指定根视图
- self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[RootTableViewController alloc] initWithStyle:UITableViewStylePlain]];
//根视图
RootTableViewController.m
- #import "RootTableViewController.h"
- #import "TestCell.h"
- #import "TestModel.h"
-
- @interface RootTableViewController ()
-
- @property (nonatomic, strong) NSMutableArray *datasourceArray;
-
- @end
-
- @implementation RootTableViewController
-
- - (void)viewDidLoad
- {
- [super viewDidLoad];
-
- self.datasourceArray = [NSMutableArray array];
-
- [self.tableView registerClass:[TestCell class] forCellReuseIdentifier:@"cell"];
-
- for (int i = 0; i < 50; i++) {
- TestModel *model = [TestModel new];
- model.isShow = NO;
- [self.datasourceArray addObject:model];
- }
-
-
- }
#pragma mark - Table view data source
数据源方法
- #pragma mark - Table view data source
-
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 1;
- }
-
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
-
- return self.datasourceArray.count;
- }
-
-
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- TestCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
-
- TestModel *model = self.datasourceArray[indexPath.row];
-
- if (model.isShow) {
-
- cell.label.text = @"展示view";
- [cell addView];
- } else {
- cell.label.text = @"什么都没有";
- [cell removeView];
- }
-
-
- return cell;
- }
返回高
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- TestModel *model = self.datasourceArray[indexPath.row];
- if (model.isShow) {
- return 300;
- } else {
- return 100;
- }
- }
点击cell触发的方法
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- TestModel *model = self.datasourceArray[indexPath.row];
- model.isShow = !model.isShow;
- [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
-
- [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
- }
准备一个自定义cell
- #import <UIKit/UIKit.h>
-
- @interface TestCell : UITableViewCell
-
- @property (nonatomic, strong) UILabel *label;
- @property (nonatomic, strong) UIView *redView;
-
- - (void)addView;
- - (void)removeView;
-
- @end
-
- #import "TestCell.h"
-
- @implementation TestCell
-
- - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
- {
- if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
- [self addAllViews];
- }
- return self;
- }
-
- - (void)addAllViews
- {
- self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 100)];
- self.label.backgroundColor = [UIColor yellowColor];
- [self addSubview:self.label];
-
- self.redView = [[UIView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, 200)];
- self.redView.backgroundColor = [UIColor redColor];
-
- }
-
- - (void)addView
- {
- [self addSubview:self.redView];
- }
-
- - (void)removeView
- {
- [self.redView removeFromSuperview];
- }
准备一个model类
- #import <Foundation/Foundation.h>
-
- @interface TestModel : NSObject
-
- @property (nonatomic, assign) BOOL isShow;
-
- @end
最终效果如下:
有好的建议和问题可微博私信:http://weibo.com/hanjunqiang
原文地址:http://blog.csdn.net/qq_31810357/article/details/49611255