大表格

//#import "ViewController.h"

#import "MyCollectionViewCell.h"

#import "Story.pch"

#import "WBPopMenuModel.h"

#import "WBPopMenuSingleton.h"#define BTN_W FIT_X(80) // 每個標(biāo)題按鈕的寬度@interface ViewController (){

NSMutableArray *_allTitles; //所有的新聞標(biāo)題

NSArray *_allDatas; //說有的新聞數(shù)據(jù)

NSArray *_tableDatas; //給每一個網(wǎng)格單元格中的表格視圖加載數(shù)據(jù)的數(shù)組

}

@property (nonatomic,strong)UIScrollView *titleScrView;//標(biāo)題滾動視圖

@property (nonatomic,strong)UILabel *titleIndicateLable; //標(biāo)題下方的指示標(biāo)簽

@property (nonatomic,strong)UICollectionView *contentsColView; //新聞內(nèi)容網(wǎng)格視圖

@end

@implementation ViewController

#pragma mark - 懶加載控件

//標(biāo)題滾動視圖

- (UIScrollView *)titleScrView

{

if (!_titleScrView)

{

_titleScrView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, FIT_Y(64), SCR_W, FIT_Y(44))];

_titleScrView.contentSize = CGSizeMake(BTN_W * _allTitles.count, FIT_Y(44));

_titleScrView.showsHorizontalScrollIndicator = NO;

for (int i = 0 ; i < _allTitles.count; i++)

{

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

btn.frame = CGRectMake(i*BTN_W, 0, BTN_W, FIT_Y(44));

[btn setTitle:_allTitles[i] forState:UIControlStateNormal];

[btn setTitle:_allTitles[i] forState:UIControlStateSelected];

[btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];

[btn setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

if (i == 0) {

btn.selected = YES;

}

btn.tag = i+100;

[btn addTarget:self action:@selector(titleBtnHandle:) forControlEvents:UIControlEventTouchUpInside];

[_titleScrView addSubview:btn];

}

[_titleScrView addSubview:self.titleIndicateLable];

}

return _titleScrView;

}

//標(biāo)題指示標(biāo)簽

- (UILabel *)titleIndicateLable

{

if (!_titleIndicateLable)

{

_titleIndicateLable = [[UILabel alloc]initWithFrame:CGRectMake(0, FIT_Y(44), BTN_W, FIT_Y(2))];

_titleIndicateLable.backgroundColor = [UIColor redColor];

}

return _titleIndicateLable;

}

//新聞內(nèi)容視圖

- (UICollectionView *)contentsColView

{

if (!_contentsColView)

{

//實(shí)例化網(wǎng)格布局對象

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc]init];

//設(shè)置每個單元格大小

flow.itemSize = CGSizeMake(SCR_W, SCR_H-FIT_Y(44));

//設(shè)置最小行間距

flow.minimumLineSpacing = 0;

//設(shè)置最小列間距

flow.minimumInteritemSpacing = 0;

//設(shè)置滾動方向水平滾動

flow.scrollDirection = UICollectionViewScrollDirectionHorizontal;

//實(shí)例化網(wǎng)格視圖

_contentsColView = [[UICollectionView alloc]initWithFrame:CGRectMake(0, FIT_Y(110), SCR_W, SCR_H-FIT_Y(44)) collectionViewLayout:flow];

_contentsColView.tag = 444;

_contentsColView.dataSource = self;

_contentsColView.delegate = self;

_contentsColView.pagingEnabled = YES; //分頁滾動

//注冊一個cell

[_contentsColView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"NewsCell"];

}

return _contentsColView;

}

//標(biāo)題滾動button方法

- (void)titleBtnHandle:(UIButton *)btn

{

//點(diǎn)擊按鈕讓collection滾動

[self.contentsColView scrollRectToVisible:CGRectMake((btn.tag-100)*SCR_W, 0, SCR_W, FIT_Y(44)) animated:YES];

}

#pragma mark - UICollectionViewDataSource

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

{

return _allTitles.count;

}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *identifier = @"NewsCell";

MyCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

if (!cell)

{

cell = [[MyCollectionViewCell alloc]initWithFrame:CGRectMake(0, 0, SCR_W, SCR_H-FIT_Y(44))];

}

cell.newsTable.dataSource = self;

cell.newsTable.delegate = self;

return cell;

}

#pragma mark - UICollectionViewDelegate

//將要出現(xiàn)cell時回調(diào)的方法

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

//如果內(nèi)容網(wǎng)格視圖滾動,執(zhí)行if中的代碼

if (scrollView.tag == 444)

{

int index = scrollView.contentOffset.x / SCR_W;

//其他的button變?yōu)閚ormal顏色

for (int i = 0; i < _allTitles.count ; i++)

{

UIButton *btn = (UIButton *)[self.titleScrView viewWithTag:i+100];

btn.selected = NO;

if (index == i)

{

btn.selected = YES;

}

}

//移動指示標(biāo)簽

[UIView animateWithDuration:0.185 animations:^{

self.titleIndicateLable.frame = CGRectMake(index * BTN_W, FIT_Y(42), BTN_W, FIT_Y(2));

}];

//讓標(biāo)題滾動視圖滾動到指定位置

[self.titleScrView scrollRectToVisible:CGRectMake(BTN_W*index, 0, BTN_W, FIT_Y(44)) animated:YES];

}

}

//即將滾動出現(xiàn)cell時的回調(diào)方法

-(void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath

{

NSLog(@"%ld",indexPath.row);

//改變網(wǎng)格單元格中表格視圖的內(nèi)容

_tableDatas = _allDatas[indexPath.row];

MyCollectionViewCell *newsCell = (MyCollectionViewCell *)cell;

[newsCell.newsTable reloadData];

}

#pragma mark - UITableViewDataSource

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return _tableDatas.count;

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *identifier = @"cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

if (!cell)

{

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];

}

cell.textLabel.text = _tableDatas[indexPath.row];

return cell;

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

self.view.backgroundColor = [UIColor whiteColor];

//? ? _allTitles = @[@"移動通訊",@"傳媒",@"軟工",@"網(wǎng)工",@"云計算",@"建筑",@"網(wǎng)站",@"高翻",@"網(wǎng)絡(luò)營銷",@"基礎(chǔ)"];

_allTitles = [NSMutableArray arrayWithObjects:@"移動通訊",@"傳媒",@"軟工",@"網(wǎng)工",@"云計算",@"建筑",@"網(wǎng)站",@"高翻",@"網(wǎng)絡(luò)營銷",@"基礎(chǔ)", nil];

_allDatas = @[@[@"iOS蘋果系",@"安卓系",@"測試系"],

@[@"網(wǎng)站",@"UI",@"后臺"],

@[@"軟工1",@"體育2",@"體育3"],

@[@"網(wǎng)工",@"科技2",@"科技3"],

@[@"云計算",@"財經(jīng)2",@"財經(jīng)3"],

@[@"建筑",@"軍事2",@"軍事3"],

@[@"網(wǎng)站",@"娛樂2",@"娛樂3"],

@[@"高翻",@"家居2",@"家居3"],

@[@"網(wǎng)絡(luò)營銷"],

@[@"男子基礎(chǔ)",@"女子基礎(chǔ)"]

];

_tableDatas = _allDatas[0];

UIView *v? = [[UIView alloc]init];

UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithTitle:@"+" style:UIBarButtonItemStylePlain target:self action:@selector(onClickedOKbtn)];

self.navigationItem.rightBarButtonItem = rightBarItem;

[self.view addSubview: v];

[self.view addSubview:self.titleScrView];

[self.view addSubview:self.contentsColView];

}

//響應(yīng)事件代碼:

- (void)onClickedOKbtn {

NSMutableArray *obj = [NSMutableArray array];

for (NSInteger i = 0; i < [self titles].count; i++) {

WBPopMenuModel * info = [WBPopMenuModel new];

info.title = [self titles][i];

[obj addObject:info];

}

[[WBPopMenuSingleton shareManager]showPopMenuSelecteWithFrame:150

item:obj

action:^(NSInteger index) {

NSLog(@"index:%ld",(long)index);

UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"提示" message:@"添加成功" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"好的", nil];

[alertview show];

}];

}

- (NSArray *) titles {

return @[@"確認(rèn)添加",

@"刪除添加",

@"關(guān)閉"

];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

*/

@end



#import@interface MyCollectionViewCell : UICollectionViewCell

@property (nonatomic,strong)UITableView *newsTable;



#import "MyCollectionViewCell.h"

#import "Story.pch"

@implementation MyCollectionViewCell

#pragma Mark - 重寫

- (instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self)

{

self.newsTable = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCR_W, SCR_H-FIT_Y(44)) style:UITableViewStylePlain];

[self.contentView addSubview:self.newsTable];

}

return self;

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容