答案 0 :(得分:1)
是的你可以这样做..
为此,您需要在每个单元格中添加scrollView
并调整其内容大小,以便它可以水平滚动。
让我简要地告诉你,你怎么能这样做..
如果您使用的是AutoLayouts,则应在TableView Cell的ContentView中插入UIScrollView并为其提供约束(.Top .Trailing .Bottom .Leading)
,所有这些约束都为constant = 0
。
然后在此视图中添加其他UIView
,并设置您为scrollView
设置的相同约束。这将显示红色约束,表明这些约束是不明确的,但dnt担心只是控制将光标从此视图绘制到Scroll View的parentView并设置相等的宽度和相等的高度。完成后请更改priority of equal width constraint from 1000 to 720
。
现在最后在上面的UIView
中添加实际的内容视图,并在此视图中插入您想要插入的内容,它可能会超出其父视图的边界。完成添加对象后,只需将上述(.Top .Trailing .Bottom .Leading)
之类的约束与相同的常量放在一起,但这次你也应该提供宽度约束。
此宽度约束实际上将充当约束高度。您可以稍后通过将此宽度约束设置为IBOutLet来更改大小,然后以编程方式调整scrollContent宽度。
为了良好的做法,您应为CustomClass
TableViewCell
答案 1 :(得分:1)
是的,您可以在每个单元格中添加滚动条。
您需要在控制器中输入委托,数据源,并使用 UICollectionView 创建自定义单元格。
然后在控制器中实现 UICollectionViewDelegate,UICollectionViewDatasource 方法。
要识别当前在单元格类中显示创建属性的单元格,例如 tableViewIndexPath ,您可以在 tableView中设置显示单元格。
我认为它会帮助你。
答案 2 :(得分:1)
这对我来说是您的要求。请试试这个。
#pragma mark -- Table view delegate and datasource --
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellid = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellid];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
self.tblHistory.showsHorizontalScrollIndicator = NO;
self.tblHistory.showsVerticalScrollIndicator = NO;
if (indexPath.row == 0) {
UIScrollView *scrollViewFood = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, cell.frame.size.width, 44)];
scrollViewFood.pagingEnabled = YES;
UILabel *lblFood;
NSInteger numberOfFoods = arrFoods.count;
CGFloat xOrigin = 0;
for (int i = 0; i < numberOfFoods; i++) {
NSString *strNames = [arrFoods objectAtIndex:i];
CGSize textSize=[strNames sizeWithAttributes:
@{NSFontAttributeName: [UIFont boldSystemFontOfSize:14.0]}];
xOrigin = CGRectGetMaxX(lblFood.frame);
lblFood = [[UILabel alloc] initWithFrame:CGRectMake(xOrigin, 0, textSize.width + 10, 44)];
lblFood.text = strNames;
lblFood.font = [UIFont boldSystemFontOfSize:14.0];
lblFood.textAlignment = NSTextAlignmentCenter;
lblFood.backgroundColor = [UIColor clearColor];
[scrollViewFood addSubview:lblFood];
}
scrollViewFood.contentSize = CGSizeMake(lblFood.frame.size.width + xOrigin + 10,44);
scrollViewFood.showsHorizontalScrollIndicator = NO;
scrollViewFood.showsVerticalScrollIndicator = NO;
scrollViewFood.delegate=self ;
[cell.contentView addSubview:scrollViewFood];
}else if (indexPath.row == 2){
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, cell.frame.size.width, 44)];
scrollView.pagingEnabled = YES;
scrollView.contentSize = CGSizeMake(cell.frame.size.width , 100);
[cell.contentView addSubview:scrollView];
}
return cell;
}
您可以根据需要更改标签的高度和宽度。
答案 3 :(得分:0)
为了更好地理解UITableView滚动,您可以关注这两个链接
我希望它可以帮助您更好地理解并熟悉UITableViewDelegate。
答案 4 :(得分:0)
您需要通过子类化创建自定义scrollView,并将代码放在其中。在Storyboard或其他任何内容中,使用此自定义scrollView类。然后TableView和Scroll View将同时滚动。你需要这样做是因为ScrollView的gestureRecognizer委托不能从你的ViewController访问,它必须通过子类化从ScrollView类本身获得。
- (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UISwipeGestureRecognizer *)otherGestureRecognizer
{
return YES;
}