我看过那些问题,但找不到我想要的东西。 UITableView and Another View inside ScrollView
我正在尝试执行以下操作: 在UIScrollView中,有一个带有几个控制器的UIView。
在它们之下,类似于UISegmentedControl。下面应该是UITableView。 UISegmentedControl将切换UITableView的内容。
所有这些都将出现在UIScrollView中。
我想要实现的是当我向下滚动时,我希望UISegmentedControl保持在视图的顶部。如果我继续向下滚动,则只会滚动UITableView内容。
这可能吗? 谢谢!
答案 0 :(得分:1)
假设我明白你的要求,我会按以下方式做到这一点:
这里的诀窍是UITableView部分标题在滚动时会粘在表格的顶部,因此您将完全达到您要搜索的内容。 表格的第一部分将滚动,分段控制器将粘在顶部,第2部分将在其下方滚动。
答案 1 :(得分:0)
我已经实现了一个包含2个部分的UITableView。第一部分没有标题,标题的高度为0。
第一部分的第一个也是唯一一个单元格是我想要滚动的UIView(红色背景)。第二部分的标题是UISegmentedControl(绿色背景)。
- (void)viewDidLoad {
[super viewDidLoad];
data = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", @"6",@"7", @"8", @"9",@"10",nil];
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
table.delegate = self;
table.dataSource = self;
[self.view addSubview:table];
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
//Return zero for the first section's header.
if (section == 0)
return 0;
return 20;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
//Return nil for the first section's header view.
if (section == 0) return nil;
head1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 20)];
head1.backgroundColor = [UIColor greenColor];
return head1;
}
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0) return 1;
return data.count;
}
- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//First section - put the UIView that will be scrollable
if (indexPath.section == 0)
{
static NSString *CellIdentifier = @"ControlCell1";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
head = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
head.backgroundColor = [UIColor redColor];
[cell.contentView addSubview:head];
return cell;
}
static NSString *CellIdentifier = @"ControlCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [data objectAtIndex:indexPath.row];
return cell;
}