TableViewの各セルで横スクロールやページング処理をしたい
TableView
の各セルで横スクロールやページングを行いたいのですが、イマイチ考え方が分かりません。Storyboard
にUITableView
を乗せてその上に複数のUITableViewCell
を乗せ、その各セル上にUIScrollView
を置きました。それからStoryboard
上の各UIScrollView
にUITableViewCell
を継承したクラスを紐付けました。一度この状態でビルドすると、空のセルを持ったTableView
が表示されるのですが、ここからどうすればいいのか分かりません。TableView
のcellForRowAtIndexPath
メソッド内でScrollView
に画像を置いたり、ページング処理を施すのでしょうか?またはUITableViewCell
を継承したクラス内で何か処理を行うのでしょうか?下に現在の途中まで書いているコードを記します。この先どういう風にプログラムを組んでいけばいいかアドバイスをいただきたいです。すみませんが、よろしくお願いします。
ViewController.h
@interface ViewController : UITableViewController
@end
ViewController.m
@interface ViewController () {
IBOutlet UITableView *_tableView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UINib *nib = [UINib nibWithNibName:NSStringFromClass([PagerCell class]) bundle:nil];
[_tableView registerNib:nib forCellReuseIdentifier:@"cell"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 4;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
PagerCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[PagerCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
switch (indexPath.row) {
case 0:
[self setTopPager];
break;
default:
break;
}
return cell;
}
- (void)setTopPager {
PagerCell *pagerCell = [[PagerCell alloc]init];
[pagerCell setTopPager:self.view];
}
@end
PagerCell.h
@interface PagerCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIScrollView *pager;
- (void)setTopPager:(UIView*)_view;
@end
PagerCell.m
@implementation PagerCell
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (void)setTopPager:(UIView*)_view {
NSArray* imageNames = [NSArray arrayWithObjects:@"android.png", @"android.png", @"android.png", @"android.png", @"android.png", @"android.png", @"android.png", @"android.png", @"android.png", @"android.png", nil];
int imageNum = [imageNames count];
for (int i=0; i < imageNum; i++) {
UIImage* image = [UIImage imageNamed:[imageNames objectAtIndex:i]];
UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
CGSize size = CGSizeMake(100, 100);
imageView.frame = CGRectMake(160*i + (160 - size.width) / 2, 0 + (180 - size.height) / 2, size.width, size.height);
[self.pager addSubview:imageView];
}
[self.pager setContentSize:CGSizeMake(100*imageNum, 120)];
[_view addSubview:self.pager];
}
@end