当表格视图向上滚动时,Tableview第一部分(第0部分)不会向上移动

时间:2016-03-29 07:06:28

标签: ios objective-c iphone uitableview uitableviewsectionheader

首先,我是iOS中的一位新鲜开发者,它出现在我的第一个项目和第一个问题中。我的问题在下面解释。

我有一个包含两个部分的tableView。问题是,当我向上滚动tableView时,除第一个节头之外的整个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节标题即“强制细节”不会根据整个tableView移动向上移动。第0部分停在视图的顶部,而tableView的其余部分甚至在视图顶部之后向上移动。但是如果我们向下滚动,即使对于第0节,表视图中的任何其他组件也没有其他问题。

请帮帮我。它看起来像每个人的错误。所以我被我的领导人解雇了。请帮助我。

2 个答案:

答案 0 :(得分:3)

解决方案1:您可以将tableview样式更改为UITableViewStyleGrouped(可以从界面执行),以达到您想要的效果。

解决方案2: 你可以使用这个调整:

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);

节标题现在将像单元格一样滚动。

答案 1 :(得分:1)

您可能需要更改表标题的默认行为

您可以参考: Change Default Scrolling Behavior of UITableView Section Header