当 table 视图向上滚动时,Tableview 第一部分(第 0 部分)没有向上移动
Tableview first section (section 0) is not moving up when table view scroll upwards
首先,我是 iOS 的新开发人员,它在我的第一个项目中,第一期就出现了。我的问题解释如下。
我有一个包含两个部分的 table视图。问题是,当我向上滚动 tableView 时,除了第一部分 header 之外的整个 tableView 都会向上移动。但是向下滚动就没有问题了。
我的代码是:
//----------------Table view delegate method numberOfSectionsInTableView.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
//----------------Table view delegate method numberOfRowsInSection.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section==0)
{
return [tableSection1 count];
}
else
{
return [tableSection2 count];
}
}
//----------------Table view delegate method titleForHeaderInSection.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(section==0)
{
return @"Mandatory Details";
}
else
{
return @"Optional Details";
}
}
//----------------Table view delegate method cellForRowAtIndexPath.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: simpleTableIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
if(indexPath.section==0)
{
// Set the data for this cell:
cell.textLabel.text = [tableSection1 objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [tableSection1Subtitle objectAtIndex:indexPath.row];
}
if(indexPath.section==1)
{
// Set the data for this cell:
cell.textLabel.text = [tableSection2 objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [tableSection2Subtitle objectAtIndex:indexPath.row];
}
return cell;
}
//---------------Table view delegate method didSelectRowAtIndexPath.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if(indexPath.section==0)
{
if(indexPath.row==0)
{
//....my code here....
}
if(indexPath.row==1)
{
//....my code here....
}
if(indexPath.row==2)
{
//....my code here....
}
if(indexPath.row==3)
{
//....my code here....
}
}
if(indexPath.section==1)
{
if(indexPath.row==1)
{
//....my code here....
}
if(indexPath.row==2)
{
//....my code here....
}
if(indexPath.row==3)
{
//....my code here....
}
}
}
所以从我的代码来看,部分 0 header 即 "Mandatory Details" 没有根据整个 tableView 移动向上移动。第 0 部分停在视图的顶部,tableView 的其余部分甚至在视图顶部之后向上移动。但是如果我们向下滚动,即使对于第 0 部分,table 视图中的任何其他组件都没有其他问题。
请帮助我。它看起来像每个人的错误。所以我被领导解雇了。请帮助我。
您可能需要更改 table header
的默认行为
你可以参考这个:
Change Default Scrolling Behavior of UITableView Section Header
解决方案1:您可以将tableview样式更改为UITableViewStyleGrouped(可以在界面上完成)以达到您想要的效果。
方案二:
您可以使用此调整:
CGFloat dummyViewHeight = 40;
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, dummyViewHeight)];
self.tableView.tableHeaderView = dummyView;
self.tableView.contentInset = UIEdgeInsetsMake(-dummyViewHeight, 0, 0, 0);
headers 部分现在将像单元格一样滚动。
首先,我是 iOS 的新开发人员,它在我的第一个项目中,第一期就出现了。我的问题解释如下。
我有一个包含两个部分的 table视图。问题是,当我向上滚动 tableView 时,除了第一部分 header 之外的整个 tableView 都会向上移动。但是向下滚动就没有问题了。
我的代码是:
//----------------Table view delegate method numberOfSectionsInTableView.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
//----------------Table view delegate method numberOfRowsInSection.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section==0)
{
return [tableSection1 count];
}
else
{
return [tableSection2 count];
}
}
//----------------Table view delegate method titleForHeaderInSection.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if(section==0)
{
return @"Mandatory Details";
}
else
{
return @"Optional Details";
}
}
//----------------Table view delegate method cellForRowAtIndexPath.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: simpleTableIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:simpleTableIdentifier];
if(indexPath.section==0)
{
// Set the data for this cell:
cell.textLabel.text = [tableSection1 objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [tableSection1Subtitle objectAtIndex:indexPath.row];
}
if(indexPath.section==1)
{
// Set the data for this cell:
cell.textLabel.text = [tableSection2 objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [tableSection2Subtitle objectAtIndex:indexPath.row];
}
return cell;
}
//---------------Table view delegate method didSelectRowAtIndexPath.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if(indexPath.section==0)
{
if(indexPath.row==0)
{
//....my code here....
}
if(indexPath.row==1)
{
//....my code here....
}
if(indexPath.row==2)
{
//....my code here....
}
if(indexPath.row==3)
{
//....my code here....
}
}
if(indexPath.section==1)
{
if(indexPath.row==1)
{
//....my code here....
}
if(indexPath.row==2)
{
//....my code here....
}
if(indexPath.row==3)
{
//....my code here....
}
}
}
所以从我的代码来看,部分 0 header 即 "Mandatory Details" 没有根据整个 tableView 移动向上移动。第 0 部分停在视图的顶部,tableView 的其余部分甚至在视图顶部之后向上移动。但是如果我们向下滚动,即使对于第 0 部分,table 视图中的任何其他组件都没有其他问题。
请帮助我。它看起来像每个人的错误。所以我被领导解雇了。请帮助我。
您可能需要更改 table header
的默认行为你可以参考这个: Change Default Scrolling Behavior of UITableView Section Header
解决方案1:您可以将tableview样式更改为UITableViewStyleGrouped(可以在界面上完成)以达到您想要的效果。
方案二: 您可以使用此调整:
CGFloat dummyViewHeight = 40;
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, dummyViewHeight)];
self.tableView.tableHeaderView = dummyView;
self.tableView.contentInset = UIEdgeInsetsMake(-dummyViewHeight, 0, 0, 0);
headers 部分现在将像单元格一样滚动。