版权声明:本文为博主原创文章,未经博主允许不得转载。
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 the number of rows in the 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;
- }
- }
- - (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];
- }
- #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];
- }
- #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