1

まず第一に、iOS の新人開発者であり、それは私の最初のプロジェクトであり、最初の問題が登場しました。私の問題は以下で説明します。

2 つのセクションを持つ 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 であっても、テーブル ビュー内の他のコンポーネントには問題はありません。

私を助けてください。誰にとってもバグのように見えます。だから私は私のリーダーから解雇されています。親切に私を助けてください。

4

2 に答える 2

3

解決策 1:目的を達成するために、テーブルビュー スタイルを 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);

セクション ヘッダーがセルのようにスクロールするようになりました。

于 2016-03-29T07:24:06.823 に答える
1

テーブル ヘッダーのデフォルトの動作を変更する必要がある場合があります

これを参照できます: UITableViewセクションヘッダーのデフォルトのスクロール動作を変更する

于 2016-03-29T07:22:51.320 に答える